原文地址http://download.oracle.com/javafx/2.0/ui_controls/list-view.htm
ListView类呈现一个可滚动的项目列表。
Figure 12-1 展示了一个住宿类型列表。
可以通过setItems
方法定义项目来产生列表。也可以使用setCellFactory
方法为列表中项目创建一个视图。
创建List View
Example 12-1中的代码块实现了Figure 12-1 中带有String
类项目的列表。
Example 12-1 Creating a List View Control
ListView<String> list = new ListView<String>(); ObservableList<String> items =FXCollections.observableArrayList ( "Single", "Double", "Suite", "Family App"); list.setItems(items);
使用setPrefHeight
和setPrefWidth
方法来改变列表视图控件的大小和高度。Example 12-2限制垂直列表具有100点宽度和70点高度,效果见Figure 12-2。
Example 12-2 Setting Height and Width for a List View
list.setPrefWidth(100); list.setPrefHeight(70);
要将ListView对象设置为水平方向的可以通过将方向属性设为
Orientation.HORIZONTAL
,这样做即可:list.setOrientation(Orientation.HORIZONTAL)
。 Figure 12-1 和Figure 12-3 中的水平列表具有相同的项目。
可以用下面的组合方法获得每个项目当前的状态:
-
getSelectionModel().selectedIndexProperty()
– 返回当前被选中项目的索引。 -
getSelectionModel().selectedItemProperty()
– 返回当前被选中项目。 -
getFocusModel().getFocusedIndex()
– 返回当前有焦点的项目索引。 -
getFocusModel().getFocusedItem()
– 返回当前有焦点的项目。
注意,选中的和有焦点的项目都是只读的,应用启动后是不能为项目指定这些属性的。
用数据产生List View
研究下面的代码学习怎么用细胞工厂(cell factory)产生列表项目。Example 12-3 中的应用创建了一个颜色模式列表。
Example 12-3 Creating a Cell Factory
import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Scene; import javafx.scene.control.ListCell; import javafx.scene.control.ListView; import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; import javafx.util.Callback; public class Main extends Application { ListView<String> list = new ListView<String>(); ObservableList<String> data = FXCollections.observableArrayList( "chocolate", "salmon", "gold", "coral", "darkorchid", "darkgoldenrod", "lightsalmon", "black", "rosybrown", "blue", "blueviolet", "brown"); @Override public void start(Stage stage) { VBox box = new VBox(); Scene scene = new Scene(box, 200, 200); stage.setScene(scene); stage.setTitle("ListViewSample"); box.getChildren().addAll(list); VBox.setVgrow(list, Priority.ALWAYS); list.setItems(data); list.setCellFactory(new Callback<ListView<String>, ListCell<String>>() { @Override public ListCell<String> call(ListView<String> list) { return new ColorRectCell(); } }); stage.show(); } static class ColorRectCell extends ListCell<String> { @Override public void updateItem(String item, boolean empty) { super.updateItem(item, empty); Rectangle rect = new Rectangle(100, 20); if (item != null) { rect.setFill(Color.web(item)); setGraphic(rect); } } } public static void main(String[] args) { launch(args); } }
细胞工厂产生了 ListCell
对象。每个细胞都关联一个单一的数据项目并显示列表中视图的一“行”。细胞呈现的内容通过setGraphic方法可以包含其他控件、文本、形状、图像。该应用中,列表细胞放的是矩形。
Figure 12-4 是该应用编译运行后产生的效果。
处理选中的List Item
按照 Example 12-4 修改应用的代码,以使其能处理特定项目被选中的事件。
Example 12-4 Processing Events for a List Item
import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.ListCell; import javafx.scene.control.ListView; import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.scene.text.Font; import javafx.stage.Stage; import javafx.util.Callback; public class Main extends Application { ListView<String> list = new ListView<String>(); ObservableList<String> data = FXCollections.observableArrayList( "chocolate", "salmon", "gold", "coral", "darkorchid", "darkgoldenrod", "lightsalmon", "black", "rosybrown", "blue", "blueviolet", "brown"); final Label label = new Label(); @Override public void start(Stage stage) { VBox box = new VBox(); Scene scene = new Scene(box, 200, 200); stage.setScene(scene); stage.setTitle("ListViewSample"); box.getChildren().addAll(list, label); VBox.setVgrow(list, Priority.ALWAYS); label.setLayoutX(10); label.setLayoutY(115); label.setFont(Font.font("Verdana", 20)); list.setItems(data); list.setCellFactory(new Callback<ListView<String>, ListCell<String>>() { @Override public ListCell<String> call(ListView<String> list) { return new ColorRectCell(); } }); list.getSelectionModel().selectedItemProperty().addListener( new ChangeListener<String>() { public void changed(ObservableValue<? extends String> ov, String old_val, String new_val) { label.setText(new_val); label.setTextFill(Color.web(new_val)); } }); stage.show(); } static class ColorRectCell extends ListCell<String> { @Override public void updateItem(String item, boolean empty) { super.updateItem(item, empty); Rectangle rect = new Rectangle(100, 20); if (item != null) { rect.setFill(Color.web(item)); setGraphic(rect); } } } public static void main(String[] args) { launch(args); } }
addListener方法调用后为
selectedItemProperty
新建了一个ChangeListener<String>
对象来绑定选中项目的改变。比如说,深紫色项目被选中了,标签接收到了"darkorchid"标题并用相应的颜色填充。修改后应用的效果见Figure 12-5 .
Figure 12-5 Selecting a Dark Orchid Color Pattern
Description of "Figure 12-5 Selecting a Dark Orchid Color Pattern"
相关推荐
3. **创建下拉列表**:在JavaFX中,可以使用`ListView`或`TableView`来展示匹配结果。每当有新的匹配项时,将这些匹配项添加到列表视图中,并显示在文本框下方。 4. **显示与隐藏**:当用户停止输入或输入清空时,...
此外,JavaFX提供了丰富的组件库,如按钮(Button)、文本框(TextField)、列表视图(ListView)等,以及动画和转换效果,使得开发者可以创建出动态和富有吸引力的应用界面。例如,可以使用`Timeline`类创建动画...
3. **ListView**: 列表视图是一种显示项目列表的有效方式。书中讲解了如何添加、删除列表项以及实现自定义的列表视图。 4. **TableView**: 表格视图用于展示表格形式的数据。读者将学会如何填充表格数据、排序列、...
- 控件(Control):用于创建按钮、复选框、列表视图、菜单栏、滑块等交互式元素。 JavaFX CSS还提供了特定类型节点的样式设置,包括但不限于: - Accordion、Button、ButtonBase、Cell、CheckBox、CheckMenuItem...
JavaFX本身并不直接处理网络通信,但可以结合Java的`java.net`包或者第三方库如Netty进行实现。 2. **多线程**:为了保证用户界面的响应速度,通常会将网络I/O操作放在后台线程中执行,避免阻塞UI线程。JavaFX提供...
在这个通讯录应用中,可能包含了显示联系人列表的`TableView`或`ListView`,用于输入和编辑信息的`TextInputControl`,以及用于导航和操作的按钮。 2. **添加个人信息**:用户可以通过界面输入新联系人的姓名、电话...
- `ListView`:显示可滚动的项目列表。 - `TableView`:用于展示表格数据,支持排序和过滤。 #### javafx.ui.canvas包 - **Overview**:这个包专注于图形对象的定义和操作,提供了画布类(`Canvas`),使得开发者...
"首页"通常会包含各种操作入口,如菜单浏览、订单查询等,这里可能运用了TableView或ListView来显示菜品列表,结合ComboBox或者Button实现筛选和选择功能。"购物车"模块则可能使用了ListView或TreeView来展示选定的...
ComboBox是一种下拉列表框,它允许用户从预定义的选项中选择或者输入自定义值。ComboBox也支持数据绑定,其ItemsSource属性同样可以绑定到ObservableCollection或其他数据源。当用户选择或输入值时,控件的...
2. 数据展示模块:可能有表格(TableView)或列表视图(ListView)来显示数据,如用户的账户信息、业务记录等。开发者可以利用JavaFX的数据绑定机制,将后台数据实时反映到界面上。 3. 操作交互模块:可能包含了...
从 JavaFX 的角度,我们可以预期 YellerFX 使用 JavaFX 的控件来构建 IRC 客户端的界面,如 TextField 用于输入文本,Button 用于执行操作,ListView 或 TableView 可能用于显示频道或用户列表。此外,项目可能还...
在这个模糊查询系统中,我们将用到`TextField`(文本框)、`ListView`(列表框)和`Button`(按钮)等基本组件。 1. **创建用户界面**: - `TextField`:用户输入查询内容的地方,可以监听其`onAction`事件来触发...
在Java中,我们可能使用JavaFX或Swing来实现这样的功能。对于JavaFX,我们可以监听`onDragDetected`、`onDragEntered`、`onDragExited`、`onDragDropped`和`onDragDone`事件。以下是一个简化的JavaFX示例: ```java...
5. **JavaFX和Swing的ListView组件**: 如果需要在图形用户界面(GUI)中展示在线列表,JavaFX和Swing提供了ListView组件。这些组件允许用户直观地浏览和交互列表,例如选择、拖放等。 6. **线程安全**: 当在线列表...
控件是用户与应用程序交互的基本元素,如按钮、文本框、列表框等。在这个场景中,我们关注的是“LISTBOX”,即列表框,一个可以显示多项选择的控件。在不同的编程语言和框架中,改变列表框背景颜色的方法会有所不同...
这个项目“JavaFxListExerciseReorganization”显然是一个关于使用JavaFX处理列表视图(ListView)的练习或示例。让我们深入探讨JavaFX和ListView在其中的角色。 JavaFX提供了丰富的图形和媒体功能,包括2D和3D图形...
此外,好友列表可能在用户界面上以列表或网格形式展示,这可以通过JavaFX的ListView或TableView组件来实现。 【私人聊天】 私聊功能需要一个消息传递系统,这可能涉及到服务器端的架构设计。开发者可能使用Socket...
6. JComboBox:下拉列表框,用户可以从预定义的选项中选择。 7. JList:显示一组可选择的项目,用户可以通过滚动或选择来操作。 8. JTable:用于展示二维数据的表格,支持排序、筛选等功能。 9. JScrollPane:滚动...
列表视图是Windows API或许多编程框架(如.NET Framework、JavaFX、Qt等)中的一种控件,用于显示一系列项目,每个项目可以有多个字段或列。获取列表视图的列数对于调整布局、计算宽度分配以及确保数据正确显示至关...
JavaFX提供了`TableView`和`ListView`组件,以及各种输入控件(`TextField`、`DatePicker`等)来实现这一功能。 4. **验证和错误处理**: 在用户输入数据时进行校验,确保数据格式正确。同时,对可能出现的异常进行...