Search code examples
javavariablesprintingjavafxobservablelist

Q: How to print a specific field of a specific row from my TableView?


i have the following problem: I read out database items in an observable list. Now I want to display some items from the selected line in a few textfields on the right side of my tableview.

I got the observable-line-index with the following code, but I want to select an other column of the line.

        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);

        }
    });

I found the following code: Click

But i don't understand this. It's something like to write a new list and place a copy of the items of the observable list in this new list.

I think, if I have the index of the line with my code, I can select the other items in the line of the observable list, too (I thought like "x,y" like an array)

If i cast it to String, the output is only machine code.

Hope I can understand the solution with your help!

EDIT: I inserted the following code:

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

But I only get machine code in my Output:

table.analysemethoden_table@63c0d5b7

EDIT 2: Table-Controller-Code:

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);
    }
}

Solution

  • You need to use

    analysemethodendata.get(databaseIndex).getRAmnorm();
    

    or any other getter method in place of getRAmnorm() to get the required output.

    databaseIndex -> row number