JavaFX如何获取ListView(列表视图)的选项
更新时间:2024年01月02日 10:21:10 作者:闪光的回忆
这篇文章主要介绍了JavaFX如何获取ListView(列表视图)的选项,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
我们使用下面的图片进行举例,点击左侧ListView选项,右侧label面板显示对应颜色。
如何获取用户的选择项?

上代码
/**
* listView的事件处理添加
*/
listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {
//s:改变前的值 t1:改变后的值
@Override
public void changed(ObservableValue<? extends String> observableValue, String s, String t1) {
if ("AQUAMARINE".equals(t1)){
label.setStyle("-fx-background-color: AQUAMARINE" );
}else if ("SPRINGGREEN".equals(t1)){
label.setStyle("-fx-background-color: SPRINGGREEN");
}else if ("Tan".equals(t1)){
label.setStyle("-fx-background-color: Tan");
}
}
});
其中“ ”中的字母为色彩代码,通过上面的代码即可为ListView添加事件处理
---------------------分界线---------------------
下面是完整代码
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Ellipse;
import javafx.stage.Stage;
import javafx.util.Callback;
/**
* 点击颜色块显示对应颜色的图形
* @author C y c l e
*/
public class ListViewColorDemo extends Application {
private BorderPane root = new BorderPane();
private ListView<String> listView = new ListView<>(FXCollections.observableArrayList(
"AQUAMARINE", "SPRINGGREEN", "Tan"
));
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
Label label = new Label("色彩块");
label.setPrefSize(200, 300);
label.setStyle("-fx-background-color: #ffffff");
VBox vBox = new VBox(5);
vBox.setPrefSize(200, 300);
vBox.getChildren().add(listView);
root.setLeft(vBox);
root.setRight(label);
//将listView设置为单元工厂
listView.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
@Override
public ListCell<String> call(ListView<String> stringListView) {
//返回一个自定义的ListCell实现类对象
return new ColorCell();
}
});
/**
* listView的事件处理添加
*/
listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {
//s:改变前的值 t1:改变后的值
@Override
public void changed(ObservableValue<? extends String> observableValue, String s, String t1) {
if ("AQUAMARINE".equals(t1)){
label.setStyle("-fx-background-color: AQUAMARINE" );
}else if ("SPRINGGREEN".equals(t1)){
label.setStyle("-fx-background-color: SPRINGGREEN");
}else if ("Tan".equals(t1)){
label.setStyle("-fx-background-color: Tan");
}
}
});
primaryStage.setScene(new Scene(root, 400, 300));
primaryStage.show();
}
/**
* 自定义一个带颜色的单元格
*/
class ColorCell extends ListCell<String>{
@Override
protected void updateItem(String s, boolean b) {
super.updateItem(s, b);
Ellipse ellipse = new Ellipse(70, 10);
//设置图形颜色
if (!b){
ellipse.setFill(Color.web(s));
setGraphic(ellipse);
}
}
}
}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringBoot+SpringBatch+Quartz整合定时批量任务方式
这篇文章主要介绍了SpringBoot+SpringBatch+Quartz整合定时批量任务方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-09-09
Java 为什么要避免使用finalizer和Cleaner
这篇文章主要介绍了Java 为什么要避免使用finalizer和Cleaner,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下2021-03-03
Intelli IDEA安装Scala插件并安装Scala软件和配置环境变量的详细教程
这篇文章主要介绍了Intelli IDEA安装Scala插件并安装Scala软件和配置环境变量的详细教程,需要的朋友可以参考下2020-10-10
使用JDBC4.0操作XML类型的字段(保存获取xml数据)的方法
jdbc4.0最重要的特征是支持xml数据类型,接下来通过本文重点给大家介绍如何使用jdbc4.0操作xml类型的字段,对jdbc4.0 xml相关知识感兴趣的朋友一起看下吧2016-08-08


最新评论