JavaFX列表选择控件的使用指南
立即解锁
发布时间: 2025-08-18 00:27:53 阅读量: 1 订阅数: 19 

### JavaFX 列表选择控件的使用指南
在 JavaFX 开发中,列表选择控件是非常实用的工具,它可以让用户从一组选项中进行选择。本文将详细介绍 ChoiceBox 和 ComboBox 这两种列表选择控件的使用方法。
#### 1. 创建选择框(ChoiceBox)
ChoiceBox 是 JavaFX 中用于创建选择框的类,它是泛型类,因此在创建时需要指定列表中元素的类型。以下是创建一个显示字符串的选择框的示例代码:
```java
ChoiceBox<String> choice = new ChoiceBox<String>();
```
创建选择框后,需要向其中添加选项。可以通过 `getItems()` 方法获取选项列表,然后使用 `add()` 方法逐个添加选项,或者使用 `addAll()` 方法一次性添加多个选项。示例如下:
```java
// 逐个添加选项
choice.getItems().add("Bashful");
choice.getItems().add("Doc");
choice.getItems().add("Dopey");
choice.getItems().add("Grumpy");
choice.getItems().add("Happy");
choice.getItems().add("Sleepy");
choice.getItems().add("Sneezy");
// 一次性添加多个选项
choice.getItems().addAll("Bashful", "Doc", "Dopey",
"Grumpy", "Happy", "Sleepy",
"Sneezy");
```
除了添加字符串,还可以添加自定义对象。选择框会调用对象的 `toString()` 方法来确定在选择列表中显示的文本。以下是一个添加自定义对象的示例:
```java
class Astronaut {
private String firstName;
private String lastName;
public Astronaut(String FirstName, String LastName) {
firstName = FirstName;
lastName = LastName;
}
public String toString() {
return firstName + " " + lastName;
}
}
ChoiceBox<Astronaut> apollo13 = new ChoiceBox<Astronaut>();
apollo13.getItems().add(new Astronaut("Jim", "Lovell"));
apollo13.getItems().add(new Astronaut("John", "Swigert"));
apollo13.getItems().add(new Astronaut("Fred", "Haise"));
```
如果需要在不等待用户点击选择框的情况下显示其内容,可以调用 `show()` 方法;若要隐藏列表,则调用 `hide()` 方法。示例如下:
```java
apollo13.show();
apollo13.hide();
```
#### 2. 设置默认值
默认情况下,选择框首次显示时没有初始选择项。可以使用 `setValue()` 方法设置初始值。如果选择框中包含字符串,可以直接传入所需的字符串值;如果包含对象,则需要传入对象的引用。示例如下:
```java
// 设置字符串选择框的初始值
choice.setValue("Dopey");
// 设置包含自定义对象的选择框的初始值
Astronaut lovell = new Astronaut("Jim", "Lovell");
Astronaut swigert = new Astronaut("John", "Swigert");
Astronaut haise = new Astronaut("Fred", "Haise");
ChoiceBox<Astronaut> apollo13 = new ChoiceBox<Astronaut>();
apollo13.getItems().addAll(lovell, swigert, haise);
apollo13.setValue(lovell);
```
#### 3. 获取选中的项
可以使用 `getValue()` 方法获取用户选择的项,返回值的类型取决于创建选择框时指定的类型。通常在按钮的动作事件处理程序中使用该方法。示例如下:
```java
public void btnOK_Click() {
String message = "You chose ";
message += apollo13.getValue();
Alert a = new Alert(Alert.AlertType.INFORMATION, message);
a.setTitle("Your Favorite Astronaut");
a.showAndWait();
}
```
#### 4. 处理可观察列表(ObservableList)
ChoiceBox 类本身不包含直接添加或删除列表项的方法,而是通过 `getItems()` 方法返回一个 `ObservableList` 对象,通过该对象可以对列表项进行操作。`ObservableList` 不仅用于 ChoiceBox,还用于其他显示列表项的控件,如 ComboBox 和 List,以及布局面板,如 HBox 和 VBox。
以下是 `ObservableList` 常用方法的表格:
| 方法 | 描述 |
| --- | --- |
| `void add(E element)` | 将指定元素添加到列表末尾 |
| `void add(int index, E element)` | 在指定索引位置添加指定对象 |
| `void addAll(E...elements)` | 将所有指定元素添加到列表末尾 |
| `void addAll(Collection<E> c)` | 将指定集合中的所有元素添加到列表末尾 |
| `E set(int index, E elem)` | 将指定索引位置的元素设置为指定对象,并返回之前该位置的元素 |
| `void clear()` | 删除列表中的所有元素 |
| `void remove(int fromIndex, int toIndex)` | 删除索引值在指定范围内的所有对象 |
| `void removeAll(E...elements)` | 删除指定的所有元素 |
| `boolean contains(Object elem)` | 判断指定对象是否在列表中 |
| `E get(int index)` | 返回指定索引位置的对象 |
| `int indexOf(O
0
0
复制全文
相关推荐










