javaFX ListCell

11 篇文章 1 订阅

ListCell 继承自Label,所以它可以当作一个容器来使用,及自定义label中的内容,主要用于自定义控件内容。凡是包含有ListCell控件的内容都可以进行自定义UI。

在Combox、TreeView、TableView、TreeTableView等中进行自定义显示UI。是进行自定义UI的基础。

1、控件setCellFactory方式

//设置格式
			cbbBox.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
				
				@Override
				public ListCell<String> call(ListView<String> param) {
					MyListCell<String> ll = new MyListCell();
					return ll;
				}
			});

2、自定义实现ListCell


//设置cell显示布局内容
class MyListCell<T> extends ListCell<T>{
	@Override
	protected void updateItem(T item, boolean empty) {
		// TODO Auto-generated method stub
		super.updateItem(item, empty);
		
		HBox bocc = new HBox();
		
		Button button = new Button((String) item);
		
		bocc.getChildren().add(button);
		
		this.setGraphic(bocc);
		
	}
	
}

3、设置显示的内容

//设置显示的数据
			cbbBox.setConverter(new StringConverter<String>() {

				@Override
				public String toString(String object) {
					// TODO Auto-generated method stub
					return object+"---ssssss";
				}

				@Override
				public String fromString(String string) {
					// TODO Auto-generated method stub
					System.out.println(string);
					return string;
				}
				
			});

完整:

package application;
	
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.util.Callback;
import javafx.util.StringConverter;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;


public class Main extends Application {
	@Override
	public void start(Stage primaryStage) {
		try {
			Group group = new Group();
			Scene scene = new Scene(group,400,400);
			ComboBox<String> cbbBox = new ComboBox<>();
			Button btnButton = new Button("getValue");
			btnButton.setOnAction((e)->{
				System.out.println(cbbBox.getValue());
			});
			cbbBox.getItems().addAll("string1","string2","string3");
			//设置显示的数据
			cbbBox.setConverter(new StringConverter<String>() {

				@Override
				public String toString(String object) {
					// TODO Auto-generated method stub
					return object+"---ssssss";
				}

				@Override
				public String fromString(String string) {
					// TODO Auto-generated method stub
					System.out.println(string);
					return string;
				}
				
			});
			//设置格式
			cbbBox.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
				
				@Override
				public ListCell<String> call(ListView<String> param) {
					MyListCell<String> ll = new MyListCell();
					return ll;
				}
			});
			group.getChildren().add(cbbBox);
			group.getChildren().add(btnButton);
			primaryStage.setScene(scene);
			primaryStage.show();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		launch(args);
	}
}


//设置cell显示布局内容
class MyListCell<T> extends ListCell<T>{
	@Override
	protected void updateItem(T item, boolean empty) {
		// TODO Auto-generated method stub
		super.updateItem(item, empty);
		
		HBox bocc = new HBox();
		
		Button button = new Button((String) item);
		
		bocc.getChildren().add(button);
		
		this.setGraphic(bocc);
		
	}
	
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值