【问题标题】:Q: How to print a specific field of a specific row from my TableView?问:如何从我的 TableView 打印特定行的特定字段?
【发布时间】:2015-04-16 07:24:02
【问题描述】:

我有以下问题:我读出了可观察列表中的数据库项目。现在我想在表格视图右侧的几个文本字段中显示所选行中的一些项目。

我通过以下代码获得了 observable-line-index,但我想选择该行的另一列。

        AnalysemethodenTable.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Object>() {
        public void changed(ObservableValue<?> observable, Object oldvalue, Object newValue) {
            index.set(analysemethodendata.indexOf(newValue));
            databaseIndex = (analysemethodendata.indexOf(newValue) + 1);
            System.out.println("Index:\t" + databaseIndex);

        }
    });

我找到了以下代码:Click

但我不明白这一点。这就像编写一个新列表并将可观察列表的项目的副本放在这个新列表中。

我想,如果我的代码有行的索引,我也可以选择可观察列表行中的其他项目(我认为像“x,y”就像一个数组)

如果我将其转换为字符串,则输出只是机器码。

希望我能在您的帮助下理解解决方案!

编辑:我插入了以下代码:

System.out.println(analysemethodendata.get(databaseIndex).toString());

但我的输出中只得到机器码:

table.analysemethoden_table@63c0d5b7

编辑 2: 表控制器代码:

package table;

import javafx.beans.property.SimpleFloatProperty;
import javafx.beans.property.SimpleStringProperty;

public class analysemethoden_table {

    private final SimpleStringProperty rAmnorm;
    private final SimpleStringProperty rMethverantw;
    private final SimpleFloatProperty rBestimmungsgrenze;
    private final SimpleFloatProperty rNachweisgrenze;

    public analysemethoden_table (String sAmnorm, String sMethoverantw, Float sBestimmungsgrenze, Float sNachweisgrenze) {
        this.rAmnorm = new SimpleStringProperty(sAmnorm);
        this.rMethverantw = new SimpleStringProperty(sMethoverantw);
        this.rBestimmungsgrenze = new SimpleFloatProperty(sBestimmungsgrenze);
        this.rNachweisgrenze = new SimpleFloatProperty(sNachweisgrenze);
    }
    // Getter- und Setter-Methoden

    /** rAmnorm **/
    public String getRAmnorm() {
        return rAmnorm.get();
    }

    public void setRAmnorm(String set) {
        rAmnorm.set(set);
    }

    /** rMethverantw **/
    public String getRMethverantw() {
        return rMethverantw.get();
    }

    public void setRMethverantw(String set) {
        rMethverantw.set(set);
    }

    /** rBestimmungsgrenze **/
    public Float getRBestimmungsgrenze() {
        return rBestimmungsgrenze.get();
    }

    public void setRBestimmungsgrenze(Float set) {
        rBestimmungsgrenze.set(set);
    }

    /** rNachweisgrenze **/
    public Float getRNachweisgrenze() {
        return rNachweisgrenze.get();
    }

    public void setRNachweisgrenze(Float set) {
        rNachweisgrenze.set(set);
    }
}

【问题讨论】:

  • databaseIndex = (analysemethodendata.indexOf(newValue) + 1); 会抛出一个编译错误,因为 indexOf() 需要一个 int 并且您正在向它传递一个 Object。
  • 我没有收到错误private IntegerProperty index = new SimpleIntegerProperty(); private int databaseIndex;
  • 我的错,那个代码没问题。您能否将列表分配给 TableView 的class 的代码发布给我?您可以覆盖类中的toString() 以获取您寻求的值而不是对象签名。
  • 对不起,我的英语不如你。表控制器还是什么?我将它编辑到开始帖子中。或这个? :final ObservableList&lt;analysemethoden_table&gt; analysemethodendata = FXCollections.observableArrayList( );
  • 没有人知道解决方案吗?

标签: java variables printing javafx observablelist


【解决方案1】:

你需要使用

analysemethodendata.get(databaseIndex).getRAmnorm();

或任何其他 getter 方法代替 getRAmnorm() 来获取所需的输出。

databaseIndex -> 行号

【讨论】:

    猜你喜欢
    • 2013-05-28
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多