《java程序设计基础》列表视图控件及相应的事件处理

创建列表图示,其中选项为古代神医的姓名,当在列表图示中选择一位名医后,将其对应图像显示。通过为绑定属性注册监听者的方法来处理属性值变化的事件.
package yuan;
//filename:App15_9.java
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.collections.FXCollections;
import javafx.scene.control.ListView;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.SelectionMode;
import javafx.scene.image.ImageView;
import javafx.collections.ObservableList;
import javafx.beans.InvalidationListener; //导入属性监听者接口
import javafx.beans.Observable;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
public class App15_9 extends Application{
private String[] my={“扁鹊”,“华佗”,“孙思邈”,“李时珍”,“张仲景”,“葛洪”};
private ImageView[] iv={new ImageView(“扁鹊.jpg”),new ImageView(“华佗.jpg”),
new ImageView(“孙思邈.jpg”),new ImageView(“李时珍.jpg”),
new ImageView(“张仲景.jpg”),new ImageView(“葛洪.jpg”)};
private ObservableList items=FXCollections.observableArrayList(my);
private ListView lv=new ListView(items);
private FlowPane fp=new FlowPane(5,5);
@Override
public void start(Stage primaryStage){
lv.setPrefSize(80,100); //设置列表视图的宽和高
lv.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
BorderPane bp=new BorderPane();
bp.setLeft(new ScrollPane(lv));
bp.setCenter(fp);
lv.getSelectionModel().selectedItemProperty().addListener(new IListener());
Scene scene=new Scene(bp,360,130);
primaryStage.setTitle(“列表视图的应用”);
primaryStage.setScene(scene);
primaryStage.show();
} //创建内部类的实现invalidationlistener接口
class IListener implements InvalidationListener{
@Override
public void invalidated(Observable ov){ //当Observable属性值变化时调用该方法
fp.getChildren().clear(); //清除留面板中的内容
for(Integer i:lv.getSelectionModel().getSelectedIndices())
fp.getChildren().add(iv[i]); //将选中名医的图像添加到流面板中
}
}
public static void main(String[] args) {
Application.launch(args);
}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值