javafx 2 CheckBoxTableCell 在表格 View 中不起作用

标签 java checkbox javafx-2 tableview javafx-8

我需要一些帮助,即使我的情况很简单。 但我不明白为什么 TableView 中的复选框没有获取值。 我从 javafx ensemble 中得到了示例

我有课

public class ReservationObj {
    private  BooleanProperty        tcheck;        
    private  StringProperty         tname;      
    private  StringProperty         tstatus;       
    private  int                    tser;

    public ReservationObj(boolean tcheck, String lname , String lBStatus, int serialinVector) {

        this.tcheck = new SimpleBooleanProperty(tcheck);            
        this.tname = new SimpleStringProperty(lname); 
        this.tstatus = new SimpleStringProperty(lBStatus);  

        this.tser = serialinVector;   

        this.tcheck.addListener(new ChangeListener<Boolean>() {

            @Override
            public void changed(ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) {
                System.out.println("The check Box is: " + t1);
            }
        });

    }

    public BooleanProperty getTcheck() {return tcheck;}

    public String   getTname() {return tname.getValue() ;}

    public void setTname(String tname) {this.tname.set(tname);}

    public String  getTstatus() {return tstatus.getValue() ;}

    public void setTstatus(String tstatus) {this.tstatus.set(tstatus);}

    public int getTser() {return tser;}

    public void setTser(int tser) { this.tser = tser;}

}   

我也有。

public Parent createContent() {

final  ObservableList<ReservationObj> ReservationList = FXCollections.observableArrayList(
        new ReservationObj(true, "aaaaaaaa", "bbbbbbbbb", 1));

    TableColumn RCheckCol = new TableColumn<ReservationObj, Boolean>();

    RCheckCol.setCellValueFactory(new PropertyValueFactory("tcheck"));          
    RCheckCol.setText("aaa");        
    RCheckCol.setCellFactory(new Callback<TableColumn<ReservationObj, Boolean>, TableCell<ReservationObj, Boolean>>() {

        public TableCell<ReservationObj, Boolean> call(TableColumn<ReservationObj, Boolean> p) {

            return new CheckBoxTableCell<ReservationObj, Boolean>();

        }
    });

    TableColumn RNameCol = new TableColumn();
    RNameCol.setCellValueFactory(new PropertyValueFactory("tname"));        
    RNameCol.setText("bbbb");

    TableColumn RAgeCol = new TableColumn();
    RAgeCol.setCellValueFactory(new PropertyValueFactory("tstatus"));
    RAgeCol.setText("cccc");

    TableView AAView   = new TableView();           

    AAView.setItems(ReservationList);          
    AAView.setEditable(true);        
    AAView.getColumns().addAll(RCheckCol,RNameCol,RAgeCol);      

    return AAView;

}

简单的时候。

@Override
public void start(Stage primaryStage) {
    primaryStage.setScene(new Scene(createContent()));
    primaryStage.show();

}

表格 View 的列正在获取除第一个“复选框”之外的值。 复选框中的监听器也不起作用。 我真的不明白我做错了什么。因为我从乐团中得到了例子。 感谢您的每一个想法和任何解决方案。 埃利亚斯

最佳答案

您的 ReservationObj 类不尊重 JavaFX Properties命名方法的约定。

如果您想将 RCheckColtcheck BooleanProperty 绑定(bind):

  RCheckCol.setCellValueFactory(new PropertyValueFactory("tcheck")); 

您必须在模型类中提供 tcheckProperty 方法:

public BooleanProperty tcheckProperty() {
        return tcheck;
    }
<小时/>

作为有效 JavaFX Bean 的示例:

public class Person {

    private StringProperty name = new SimpleStringProperty("");

    public Person(String name) {
        this.name.setValue(name);
    }

    public String getName() {
        return name.getValue();
    }

    public void setName(String name) {
        this.name.setValue(name);
    }

    public StringProperty nameProperty() {
        return name;
    }
}

关于javafx 2 CheckBoxTableCell 在表格 View 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18460886/

相关文章:

Java缺少返回语句

android - ListView中的checkbox 'Checked'滚动后恢复

javascript - 如何使用ejs获取node js中复选框的值?

java - 为什么新的 Java Logger 在这里无法一致工作?

java - Spring MVC 处理程序拦截器不运行

java 缓冲图像 : Detecting black pixels

javascript - Jquery方法捕获嵌套div内的复选框点击

javafx 2 媒体异常 : MEDIA_UNAVAILABLE won't load file

javafx-2 - 如何更改选项卡 Pane 样式

javafx-2 - FXMLLoader 中的 NPE