Text im Tetfeld in einer TableView darstellen

busgi

Aktives Mitglied
Hallo zusammen,

habe ein kleines Problem.
Ich erstelle mit einem "+"- Button beliebig viele Textfelder. Die Texte in den Textfeldern möchte ich mit einem "Erstellen"-Button in einer TableView anzeigen lassen.
Ich habe schon rumprobiert aber leider ist es mir nicht gelungen eine logische Lösung zu finden, da ich diesen Code benutzt habe um Textfelder zu erzeigen.

addTextFieldButton.setOnAction(e -> hbox2.getChildren().add(new TextField()));

also haben die einzelnen Textfelder natürlich auch keine spezielle variablen.

Unten seht ihr ein Bild wie die GUI momentan aussieht.

mit dem addButton möchte ich die einzelnen Texte in den Spalten angezeigt bekommen.

Mein Code:

Code:
package Tableview;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;

import javafx.stage.Stage;

public class CreateScheme extends Application {

    // Variablen

    @Override
    public void start(Stage secondStage) throws Exception {

        // Scene / root
        Pane pane = new Pane(); // Layout -> alle Elmente haben die Position 0/0
        Scene scene = new Scene(pane, 800, 600);

        // Variablen erstellen
        VBox vbox = new VBox();
        VBox vbox2 = new VBox();
        HBox hbox = new HBox();
        HBox hbox2 = new HBox();
        HBox hbox3 = new HBox();
        Label label = new Label("Bewertungsschema erstellen: ");
        Button button = new Button("New");
        TextField textField1 = new TextField();
        CheckBox checkbox = new CheckBox();
        Button addButton = new Button("Erstellen");
        Button cancelButton = new Button("Abbrechen");
        Button saveButton = new Button("Speichern");
        Button addTextFieldButton = new Button("+");
        TableView<Model> tableview = new TableView<Model>();
        TableColumn<Model, String> table1 = new TableColumn<Model, String>("Table1");
        TableColumn<Model, String> table2 = new TableColumn<Model, String>("Table2");
        TableColumn<Model, String> table3 = new TableColumn<Model, String>("Table3");
        TableColumn<Model, String> table4 = new TableColumn<Model, String>("Table4");
        TableColumn<Model, String> table5 = new TableColumn<Model, String>("Table5");
  
      
        ObservableList<Model> list = Listen.getUserList();
        tableview.setItems(list);
        tableview.setEditable(true);
        tableview.getColumns().addAll(table1, table2, table4, table5, table3);
        table1.setCellFactory(TextFieldTableCell.<Model>forTableColumn());
        table2.setCellFactory(TextFieldTableCell.<Model>forTableColumn());
        table3.setCellFactory(TextFieldTableCell.<Model>forTableColumn());
        table4.setCellFactory(TextFieldTableCell.<Model>forTableColumn());
        table5.setCellFactory(TextFieldTableCell.<Model>forTableColumn());

        textField1.setVisible(false);
        checkbox.setVisible(false);
        vbox2.setVisible(false);

        hbox.setSpacing(10.0);
        hbox.getChildren().addAll(button, textField1, checkbox);

        vbox.setLayoutX(10.0);
        vbox.setLayoutY(30.0);
        vbox.setSpacing(30.0);
        vbox.setPadding(new Insets(10.0, 20.0, 30.0, 10.0));
        vbox.getChildren().addAll(label, hbox);

        vbox2.setLayoutX(300.0);
        vbox2.setLayoutY(30.0);
        vbox2.setSpacing(30.0);
        vbox2.setMaxHeight(200.0);
        vbox2.setPadding(new Insets(50.0, 30.0, 30.0, 30.0));
        vbox2.getChildren().add(tableview);

        hbox2.setLayoutX(10.0);
        hbox2.setLayoutY(500.0);
        hbox2.setSpacing(20.0);
      
        hbox3.setLayoutX(10.0);
        hbox3.setLayoutY(550.0);
        hbox3.setSpacing(20.0);
        hbox3.getChildren().addAll(addButton, cancelButton, saveButton, addTextFieldButton);

        button.setOnAction(new EventHandler<ActionEvent>() {

            public void handle(ActionEvent e) {
                textField1.setVisible(true);
                checkbox.setVisible(true);
            }
        });

        checkbox.setOnAction(new EventHandler<ActionEvent>() {

            public void handle(ActionEvent e) {
                vbox2.setVisible(true);
                textField1.setEditable(false);
            }
        });

        addTextFieldButton.setOnAction(e -> hbox2.getChildren().add(new TextField()));
      
      
        addButton.setOnAction(new EventHandler<ActionEvent>() {

            public void handle(ActionEvent e) {
                  
                    //list.add(new Model();
                    tableview.refresh();
                }
        });
      
  
        pane.getChildren().addAll(vbox, vbox2, hbox2, hbox3);

        scene.getStylesheets().add("style.css");
        secondStage.setTitle("GBO-Tool");
        secondStage.setScene(scene);
        secondStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

Code:
package Tableview;

import javafx.beans.property.SimpleStringProperty;

public class Model {

    private SimpleStringProperty table1;
    private SimpleStringProperty table2;
    private SimpleStringProperty table3;
    private SimpleStringProperty table4;
    private SimpleStringProperty table5;
  
  
    public Model(String table1, String table2, String table3, String table4, String table5) {
        this.table1 = new SimpleStringProperty(table1);
        this.table2 = new SimpleStringProperty(table2);
        this.table3 = new SimpleStringProperty(table3);
        this.table4 = new SimpleStringProperty(table4);
        this.table5 = new SimpleStringProperty(table5);
    }

    // Getter Setter
    public String getTable1() {
        return table1.get();
    }

    public void setTable1(SimpleStringProperty table1) {
        this.table1 = table1;
    }

    public String getTable2() {
        return table2.get();
    }

    public void setTable2(SimpleStringProperty table2) {
        this.table2 = table2;
    }

    public String getTable3() {
        return table3.get();
    }

    public void setTable3(SimpleStringProperty table3) {
        this.table3 = table3;
    }

    public String getTable4() {
        return table4.get();
    }

    public void setTable4(SimpleStringProperty table4) {
        this.table4 = table4;
    }
  
    public String getTable5() {
        return table5.get();
    }

    public void setTable5(SimpleStringProperty table5) {
        this.table5 = table5;
    }

    public void setTable1(String newValue) {
        // TODO Auto-generated method stub
      
    }
    public void setTable2(String newValue) {
        // TODO Auto-generated method stub
      
    }
    public void setTable3(String newValue) {
        // TODO Auto-generated method stub
      
    }
    public void setTable4(String newValue) {
        // TODO Auto-generated method stub
      
    }
    public void setTable5(String newValue) {
        // TODO Auto-generated method stub
      
    }
}

Freue mich auf Vorschläge und Tipps.
Danke :)
 

Anhänge

  • Unbenannt.PNG
    Unbenannt.PNG
    43,5 KB · Aufrufe: 78

Robat

Top Contributor
Möchtest du der Tabelle einfach nur einen neuen Datensatz hinzufügen, sobald auf den + Button gedrückt wird?
 

mihe7

Top Contributor
D. h. mit dem + button willst Du Spalten zur Tabelle hinzufügen und mit Erstellen fügst Du einen Datensatz zur Tabelle hinzu?
 

busgi

Aktives Mitglied
D. h. mit dem + button willst Du Spalten zur Tabelle hinzufügen und mit Erstellen fügst Du einen Datensatz zur Tabelle hinzu?

nein. mit dem + button erzeuge ich unten die textfelder. die daten (text) in den textfeldern, sollen mit dem "erstellen" button in der tableview angezeigt werden.

siehe oben das bild. dort habe ich es markiert.


by the way. kann ich auch beliebig viele spalten in eine tableview einfügen? je nachdem wieviel ich brauche?
 

busgi

Aktives Mitglied
Ich sehe dort unten vier Textfelder und in der Tabelle fünf Spalten. Was soll denn rauskommen, wenn ich in die Textfelder der Reihe nach T1, T2, T3 und T4 eintrage und dann auf "Erstellen" klicke?

mit dem + button kann ich auch fünf textfelder erstellen. das ist nicht entscheidend.
ich zeige es anhand eines bildes. siehe unten. mit dem erstellen button wird der text in den textfeldern im tableview angezeigt. ich weiß nicht wie ich es anders erklären soll. die aufgabenstellung ist ganz klar. ich wiederhole mich nur noch :D;)Unbenannt.PNG
 

mihe7

Top Contributor
Und was passiert, wenn Du mit dem "+" sechs Textfelder erstellst (Nachtrag: und natürlich ausfüllst)? Du hast in der Tabelle ja nur 5 Spalten.
 

busgi

Aktives Mitglied
Und was passiert, wenn Du mit dem "+" sechs Textfelder erstellst (Nachtrag: und natürlich ausfüllst)? Du hast in der Tabelle ja nur 5 Spalten.

ich brauche maximal nur fünf. aber es wäre natürlich auch toll wenn ich die anzahl der spalten beliebig auswählen könnte. mit einer eingabe am besten. ich frage mich ob das überhaupt gehen würde. das ist aber jetzt nicht das eigentlich problem.
 

mihe7

Top Contributor
Ich verstehe zwar den ganzen Aufwand nicht, aber ich würde folgendes versuchen:
1. ein Model-Objekt verwenden
2. beim "+" neues Textfeld erstellen und an die betreffende Property binden
3. beim Erstellen eine Kopie des Model-Objekts der ObservableList hinzufügen und
4. das Model-Objekt zurücksetzen
 

busgi

Aktives Mitglied
Ich verstehe zwar den ganzen Aufwand nicht, aber ich würde folgendes versuchen:
1. ein Model-Objekt verwenden
2. beim "+" neues Textfeld erstellen und an die betreffende Property binden
3. beim Erstellen eine Kopie des Model-Objekts der ObservableList hinzufügen und
4. das Model-Objekt zurücksetzen


Danke für die Tipps. Ich werde das Ganze mal versuchen auszuprobieren und weiter recherchieren :)
 

mihe7

Top Contributor
Hab mal etwas zusammengeschustert (Achtung: das ist wirklich ein Flickwerk)
Java:
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;

import javafx.stage.Stage;

public class CreateScheme extends Application {

    private Model model;

    // Variablen

    @Override
    public void start(Stage secondStage) throws Exception {

        // Scene / root
        Pane pane = new Pane(); // Layout -> alle Elmente haben die Position 0/0
        Scene scene = new Scene(pane, 800, 600);

        // Variablen erstellen
        VBox vbox = new VBox();
        VBox vbox2 = new VBox();
        HBox hbox = new HBox();
        HBox hbox2 = new HBox();
        HBox hbox3 = new HBox();
        Label label = new Label("Bewertungsschema erstellen: ");
        Button button = new Button("New");
        TextField textField1 = new TextField();
        CheckBox checkbox = new CheckBox();
        Button addButton = new Button("Erstellen");
        Button cancelButton = new Button("Abbrechen");
        Button saveButton = new Button("Speichern");
        Button addTextFieldButton = new Button("+");
        TableView<Model> tableview = new TableView<Model>();

        ObservableList<Model> list = FXCollections.observableArrayList();

        model = new Model();
        model.addListener(e -> {
            while (e.next()) {
                if (e.wasAdded()) {
                    int ix = model.size() - 1;
                    for (Model m : list) {
                        if (m.size() <= ix) {
                            m.add("");
                        }
                    }
                    TableColumn<Model, String> column = new TableColumn<Model, String>("Table" + (ix+1));
                    column.setCellFactory(TextFieldTableCell.<Model>forTableColumn());
                    column.setCellValueFactory(feature -> feature.getValue().get(ix));
                    tableview.getColumns().add(column);
                }
            }
        });

        tableview.setItems(list);
        tableview.setEditable(true);

        textField1.setVisible(false);
        checkbox.setVisible(false);
        vbox2.setVisible(false);

        hbox.setSpacing(10.0);
        hbox.getChildren().addAll(button, textField1, checkbox);

        vbox.setLayoutX(10.0);
        vbox.setLayoutY(30.0);
        vbox.setSpacing(30.0);
        vbox.setPadding(new Insets(10.0, 20.0, 30.0, 10.0));
        vbox.getChildren().addAll(label, hbox);

        vbox2.setLayoutX(300.0);
        vbox2.setLayoutY(30.0);
        vbox2.setSpacing(30.0);
        vbox2.setMaxHeight(200.0);
        vbox2.setPadding(new Insets(50.0, 30.0, 30.0, 30.0));
        vbox2.getChildren().add(tableview);

        hbox2.setLayoutX(10.0);
        hbox2.setLayoutY(500.0);
        hbox2.setSpacing(20.0);
     
        hbox3.setLayoutX(10.0);
        hbox3.setLayoutY(550.0);
        hbox3.setSpacing(20.0);
        hbox3.getChildren().addAll(addButton, cancelButton, saveButton, addTextFieldButton);

        button.setOnAction(new EventHandler<ActionEvent>() {

            public void handle(ActionEvent e) {
                textField1.setVisible(true);
                checkbox.setVisible(true);
            }
        });

        checkbox.setOnAction(new EventHandler<ActionEvent>() {

            public void handle(ActionEvent e) {
                vbox2.setVisible(true);
                textField1.setEditable(false);
            }
        });

        addTextFieldButton.setOnAction(e -> {
            TextField tf = new TextField();
            int ix = model.size();
            model.add("");
            tf.textProperty().bindBidirectional(model.get(ix));
            hbox2.getChildren().add(tf);
        });
     
     
        addButton.setOnAction(new EventHandler<ActionEvent>() {

            public void handle(ActionEvent e) {
                model.addTo(list);
                model.reset();
            }
        });
     
 
        pane.getChildren().addAll(vbox, vbox2, hbox2, hbox3);

        scene.getStylesheets().add("style.css");
        secondStage.setTitle("GBO-Tool");
        secondStage.setScene(scene);
        secondStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

Java:
import javafx.beans.property.Property;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.beans.property.SimpleStringProperty;
import java.util.List;

public class Model {
    private final ObservableList<SimpleStringProperty> properties = FXCollections.observableArrayList();

    public void addListener(ListChangeListener<? super SimpleStringProperty> listener) {
        properties.addListener(listener);
    }

    public void add(String value) { properties.add(new SimpleStringProperty(value)); }    
    public int size() { return properties.size(); }
    public Property<String> get(int ix) { return properties.get(ix); }

    public void addTo(List<Model> list) {
        Model copy = new Model();
        for (SimpleStringProperty prop : properties) {
            copy.add(prop.getValue());
        }
        list.add(copy);
    }

    public void reset() {
        for (SimpleStringProperty prop : properties) {
            prop.setValue("");
        }
    }
}
 

busgi

Aktives Mitglied
@mihe kannst du vielleicht erklären, was das hier genau macht?
for (Model m : list) {
if (m.size() <= ix) {
m.add("");
}

komme leider nicht drauf.
 

mihe7

Top Contributor
Klar. Dazu muss ich ein bisschen ausholen. Wenn Du auf "+" drückst, fügst Du dem Model-Objekt der Anwendung eine StringProperty hinzu, erzeugst ein neues Textfeld und bindest dieses an die neue StringProperty. Damit ist das Thema für die Textfelder erledigt.

Um die Tabelle zu behandeln, wird beim Model ein Listener registriert. Der hat die Aufgabe, der Tabelle eine neue Spalte hinzuzufügen. Problem: in list befinden sich zu dem Zeitpunkt Model-Objekte mit weniger Properties (=Spalten). Daher füge ich vorher jedem Model in der List einen leeren String hinzu.

Java:
for (Model m : list) {    // wiederhole für jedes Model-Objekt (m) der Liste list
    if (m.size() <= ix) { // falls im Model-Objekt m eine Propery zu wenig vorhanden ist...
        m.add("");        // ... füge m ein neue Property (leerer String) hinzu
    }
}

Hierzu vier Anmerkungen: erstens könnte man auch die Textfelder über den (oder einen) Listener erschlagen. Zweitens ist viel interessanter: die if-Abfrage ist streng genommen unsinnig.

Entweder kann ich davon ausgehen, dass die Model-Objekte in der Liste immer genau eine Property zu wenig haben (es wurde ja gerade erst eine neue hinzugefügt), dann brauche ich die if-Abfrage nicht. Oder aber ich muss davon ausgehen, dass sich die Model-Objekte in der Liste auch um mehr als nur eine Property unterscheiden könnten. Dann dürfte ich keine if-Abfrage verwenden sondern bräuchte eine Schleife.

Drittens bräuchte es das vermutlich alles nicht, wenn man die TableCellValueFactory richtig setzt (prüfen, ob ix >= size ist, falls ja, eine ReadOnlyStringProperty (leerer String) zurückgeben, sonst die Property aus dem Model).

Viertens: mir gefällt das alles nicht (Flickwerk).
 

busgi

Aktives Mitglied
Danke für die Antwort.

Ich verstehe es wenn es dir nicht gefällt. Meine Schwäche ist eher das Ganze allgemein zu halten. Ich würde auch gerne eine normale Model-Klasse mit normalen Gettern und Settern verwenden. Leider ist aber die Aufgabe, dass ich die GUI dynamisch und benutzerfreundlich halten muss.

Vielen Dank für die Mühe :)
 

mihe7

Top Contributor
Das hast Du aber nett formuliert :)

Überlegung wäre die, dass man das Problem erst einmal vernünftig modelliert. Dabei käme ein Interface ähnlich zu Swing's TableModel heraus. Das wäre dann an die View inkl. TableView anzubinden. Mir ist nur noch nicht ganz klar, wie man letzteres in JavaFX bewerkstelligt, ohne sich die Finger wund zu schreiben :)
 

dzim

Top Contributor
Ok, dann mal Ärmel hoch und los geht's. Ich hab mal mein eines TableView-Beispiel aktualisiert, das war noch sehr... ähm... primitiv.

Main-Klasse: https://github.com/bgmf/poc/blob/up...ain/java/eu/dzim/tests/fx/MainTableTest2.java
Java:
package eu.dzim.tests.fx;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

import java.io.IOException;

public class MainTableTest2 extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Table Test 2");
        try {
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(MainTableTest2.class.getResource("/fxml/TableTest2.fxml"));
            Pane rootLayout = loader.load();
            Scene scene = new Scene(rootLayout);
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

FXML: https://github.com/bgmf/poc/blob/up...ts-fx/src/main/resources/fxml/TableTest2.fxml
HTML:
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<BorderPane xmlns:fx="http://javafx.com/fxml" fx:controller="eu.dzim.tests.fx.controller.TableTest2Controller">

    <center>
        <TabPane fx:id="tabPane" tabClosingPolicy="UNAVAILABLE">
            <Tab fx:id="tab1" text="Table">
                <VBox>
                    <TableView fx:id="tableView">
                        <columns>
                            <TableColumn fx:id="tableColumnText" text="Text" prefWidth="150"/>
                            <TableColumn fx:id="tableColumnFlag1" text="Flag 1" prefWidth="50"/>
                            <TableColumn fx:id="tableColumnFlag2" text="Flag 2" prefWidth="50"/>
                            <TableColumn fx:id="tableColumnFlag3" text="Flag 3" prefWidth="50"/>
                        </columns>
                    </TableView>
                </VBox>
            </Tab>
            <Tab fx:id="tab2" text="Data">
                <GridPane hgap="5" vgap="5">
                    <Label text="Text:" GridPane.columnIndex="0" GridPane.rowIndex="0"/>
                    <Label text="Flag 1:" GridPane.columnIndex="0" GridPane.rowIndex="1"/>
                    <Label text="Flag 2:" GridPane.columnIndex="0" GridPane.rowIndex="2"/>
                    <Label text="Flag 3:" GridPane.columnIndex="0" GridPane.rowIndex="3"/>
                    <TextField fx:id="textField" promptText="some text" GridPane.columnIndex="1" GridPane.rowIndex="0"/>
                    <CheckBox fx:id="checkBox1" GridPane.columnIndex="1" GridPane.rowIndex="1"/>
                    <CheckBox fx:id="checkBox2" GridPane.columnIndex="1" GridPane.rowIndex="2"/>
                    <CheckBox fx:id="checkBox3" GridPane.columnIndex="1" GridPane.rowIndex="3"/>
                    <Separator GridPane.columnIndex="0" GridPane.rowIndex="4" GridPane.columnSpan="2"/>
                    <Button fx:id="button" text="Submit" GridPane.columnIndex="0" GridPane.rowIndex="5" GridPane.columnSpan="2"/>
                </GridPane>
            </Tab>
        </TabPane>
    </center>
</BorderPane>

Controller: https://github.com/bgmf/poc/blob/up...tests/fx/controller/TableTest2Controller.java
Java:
package eu.dzim.tests.fx.controller;

import eu.dzim.tests.fx.model.TableTest2Model;
import javafx.collections.FXCollections;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;

public class TableTest2Controller {

    @FXML private TabPane tabPane;
    @FXML private Tab tab1;
    @FXML private TableView<TableTest2Model> tableView;
    @FXML private TableColumn<TableTest2Model, String> tableColumnText;
    @FXML private TableColumn<TableTest2Model, Boolean> tableColumnFlag1;
    @FXML private TableColumn<TableTest2Model, Boolean> tableColumnFlag2;
    @FXML private TableColumn<TableTest2Model, Boolean> tableColumnFlag3;
    @FXML private Tab tab2;
    @FXML private TextField textField;
    @FXML private CheckBox checkBox1;
    @FXML private CheckBox checkBox2;
    @FXML private CheckBox checkBox3;
    @FXML private Button button;

    @FXML
    private void initialize() {

        System.err.println("#init");

        tableView.setItems(FXCollections.observableArrayList());

        tableColumnText.setCellValueFactory(new PropertyValueFactory<>("text"));
        tableColumnFlag1.setCellValueFactory(new PropertyValueFactory<>("flag1"));
        tableColumnFlag2.setCellValueFactory(new PropertyValueFactory<>("flag2"));
        tableColumnFlag3.setCellValueFactory(new PropertyValueFactory<>("flag3"));

        button.setOnAction(actionEvent -> {

            TableTest2Model model = new TableTest2Model();
            model.setText(textField.getText());
            model.setFlag1(checkBox1.isSelected());
            model.setFlag2(checkBox2.isSelected());
            model.setFlag3(checkBox3.isSelected());

            tableView.getItems().add(model);

            actionEvent.consume();
        });
    }
}

Model: https://github.com/bgmf/poc/blob/up...a/eu/dzim/tests/fx/model/TableTest2Model.java
Java:
package eu.dzim.tests.fx.model;

import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;

public class TableTest2Model {

    private StringProperty text = new SimpleStringProperty(this, "text", "");
    private BooleanProperty flag1 = new SimpleBooleanProperty(this, "flag1", false);
    private BooleanProperty flag2 = new SimpleBooleanProperty(this, "flag2", false);
    private BooleanProperty flag3 = new SimpleBooleanProperty(this, "flag2", false);

    public final StringProperty textProperty() {
        return this.text;
    }

    public final String getText() {
        return this.textProperty().get();
    }

    public final void setText(final String text) {
        this.textProperty().set(text);
    }

    public final BooleanProperty flag1Property() {
        return this.flag1;
    }

    public final boolean isFlag1() {
        return this.flag1Property().get();
    }

    public final void setFlag1(final boolean flag) {
        this.flag1Property().set(flag);
    }

    public final BooleanProperty flag2Property() {
        return this.flag2;
    }

    public final boolean isFlag2() {
        return this.flag2Property().get();
    }

    public final void setFlag2(final boolean flag) {
        this.flag2Property().set(flag);
    }

    public final BooleanProperty flag3Property() {
        return this.flag3;
    }

    public final boolean isFlag3() {
        return this.flag3Property().get();
    }

    public final void setFlag3(final boolean flag) {
        this.flag3Property().set(flag);
    }
}

Modell also nicht resetten, sondern neu instantiieren. Der Rest ist eigentlich recht "straight forward", denke ich.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
C JToggleButton disabled Text Color AWT, Swing, JavaFX & SWT 11
H JavaFX Label.Text mit bind an DoubleProperty binden AWT, Swing, JavaFX & SWT 3
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
FrittenFritze Text in Flying Saucer selectierbar machen AWT, Swing, JavaFX & SWT 0
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
H JavaFX Gedrehter Text auf Canvas (Positionierung) AWT, Swing, JavaFX & SWT 6
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
I Rich Text drucken AWT, Swing, JavaFX & SWT 0
B Text mit Absatz + OK-Button, der Fenster wieder schließt AWT, Swing, JavaFX & SWT 7
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
N Promt Text der Combobox AWT, Swing, JavaFX & SWT 0
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
N In Textdatei Text anfügen per GUI AWT, Swing, JavaFX & SWT 3
N Textdatei GUI, Text in Textarea anzeigen mehrere Zeilen AWT, Swing, JavaFX & SWT 1
R Swing JTextField nicht-kopierbarer Text AWT, Swing, JavaFX & SWT 1
S Text-Info in der Taskbar anzeigen AWT, Swing, JavaFX & SWT 15
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
S Swing JLabel Text mit der Zeit ändern AWT, Swing, JavaFX & SWT 1
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
C JCheckBox disabled text color AWT, Swing, JavaFX & SWT 9
ralfb1105 JavaFX Wie Text Label in neuem Window von Main Stage setzen? AWT, Swing, JavaFX & SWT 6
CptK Swing Button: ImageIcon unter den Text AWT, Swing, JavaFX & SWT 4
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
L JavaFX Anderer Text, wenn kein Platz ist. AWT, Swing, JavaFX & SWT 1
K JavaFX TextInputDialog Button Text ändern AWT, Swing, JavaFX & SWT 1
S 2D-Grafik affine Transformation für Text-Shape AWT, Swing, JavaFX & SWT 0
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
J Text in ein Textfeld eingeben und speichern AWT, Swing, JavaFX & SWT 27
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
C Swing Spinner als TableCellEditor - Text zu klein AWT, Swing, JavaFX & SWT 2
H JavaFX - Button und Text - Falsche Darstellung AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Extern den Text eines nicht fetsgelegten Buttons bekommen. AWT, Swing, JavaFX & SWT 12
zhermann FX Label text wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 12
I JavaFX formatierter Text in PDF speichern AWT, Swing, JavaFX & SWT 4
T JavaFX Text des ProgressIndicators ändern AWT, Swing, JavaFX & SWT 2
E Swing Text verschwindet AWT, Swing, JavaFX & SWT 1
G JavaFX - Während AudioRecording keine Text eingabe TextField möglich AWT, Swing, JavaFX & SWT 6
G Rectangle Breite richtet such an die Breite vom Text AWT, Swing, JavaFX & SWT 1
Sanni94 JavaFX Kann man eine Grafik in einen Text einbinden? AWT, Swing, JavaFX & SWT 2
S JTextArea Text nach oben wandern lassen AWT, Swing, JavaFX & SWT 7
F Icons neben Text in Listview setzen AWT, Swing, JavaFX & SWT 2
K Rich Text FX von TomasMikula AWT, Swing, JavaFX & SWT 0
M Text in einem Label fett setzen AWT, Swing, JavaFX & SWT 4
S JAVAFX HTMLEditor wrap text AWT, Swing, JavaFX & SWT 1
J JavaFX Translation Text/Label AWT, Swing, JavaFX & SWT 2
K Swing JTable mit ImageIcon und Text in einer Zelle AWT, Swing, JavaFX & SWT 1
A JavaFX HTMLEditor in Text umwandeln AWT, Swing, JavaFX & SWT 2
M Swing jButton Text verschwindet AWT, Swing, JavaFX & SWT 2
J JavaFX Bestimmte Zellen im TableView ändern (Farbe und Text) AWT, Swing, JavaFX & SWT 1
2 JLabel - setText ändert den Text nicht AWT, Swing, JavaFX & SWT 4
B Jlabel Text von anderen Klasse aus ändern AWT, Swing, JavaFX & SWT 9
stylegangsta JLabel anzuzeigenden Text zentrieren AWT, Swing, JavaFX & SWT 9
javampir Java FX Text verschwindet nicht AWT, Swing, JavaFX & SWT 9
Tausendsassa Text changed event handler jTextField AWT, Swing, JavaFX & SWT 3
Tom299 JavaFX Text oder Label benutzen AWT, Swing, JavaFX & SWT 4
E To get a color text on the TextArea AWT, Swing, JavaFX & SWT 4
E To get color text on the TextArea AWT, Swing, JavaFX & SWT 5
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
Z AWT JLabel setzt kein neuen Text AWT, Swing, JavaFX & SWT 6
D Event Handling Aus einer anderen Klasse heraus einen Text des JLabels ändern. AWT, Swing, JavaFX & SWT 12
T JavaFX Editable Combobox Text-Selektierung nach Trigger AWT, Swing, JavaFX & SWT 4
S JLabel-Text in Methode setzen? AWT, Swing, JavaFX & SWT 2
F JPanel "zeichnet" keinen Text AWT, Swing, JavaFX & SWT 14
U WYSIWYG Text-Editor für JFrames AWT, Swing, JavaFX & SWT 8
C Button Text in JList neue Zeile AWT, Swing, JavaFX & SWT 6
T MausClick soll TExt ändern AWT, Swing, JavaFX & SWT 6
J Text bei Eingabe löschen AWT, Swing, JavaFX & SWT 5
A SWT Auto completion in text box AWT, Swing, JavaFX & SWT 5
C Geloest: JTextfield: Titel automatisch entfernen, sobald Text eingegeben wird AWT, Swing, JavaFX & SWT 1
I Text zur Linie zeichnen AWT, Swing, JavaFX & SWT 1
J JavaFX JavaFX Probleme bei der Anzeige von Text AWT, Swing, JavaFX & SWT 18
X AWT Text der mit Graphics "drawString(...)" geschreiben wurde wieder löschen. AWT, Swing, JavaFX & SWT 6
O Swing Text aus Textfield auslesen AWT, Swing, JavaFX & SWT 8
B Text auf Display ausgeben [LWJGL] AWT, Swing, JavaFX & SWT 2
G Text im textfeld in einem Editor anzeigen AWT, Swing, JavaFX & SWT 18
S TextArea get Selected row(Text) AWT, Swing, JavaFX & SWT 6
A Radio Buttons sollen den Text der text Area bestimmen AWT, Swing, JavaFX & SWT 9
BRoll JButton Text nicht ausblenden ("...") AWT, Swing, JavaFX & SWT 2
J LayoutManager Text Spielerein GUI AWT, Swing, JavaFX & SWT 2
H Javafx - Styled Text AWT, Swing, JavaFX & SWT 5
M Text Area 1. Zeile oben AWT, Swing, JavaFX & SWT 4
A Swing Focus der Radio Buttons + text bleibt gleich und gleichzeitige ausgabe zweier Objekte in 1. Fenster AWT, Swing, JavaFX & SWT 3
R JavaFX Automatischer Zeilenumbruch in Text AWT, Swing, JavaFX & SWT 13
P JList/JScroolPane Text verschieben und text wrappen AWT, Swing, JavaFX & SWT 3
F Dialog mit Titel, Text und Ok Button AWT, Swing, JavaFX & SWT 2
T Swing HTML Text aus JLabel ohne "HTML-Tags" in String einlesen AWT, Swing, JavaFX & SWT 5
TheJavaKid DocumentListener soll Text in JTextField ändern AWT, Swing, JavaFX & SWT 4
K JEditorPane Text einfügen AWT, Swing, JavaFX & SWT 4
A Text (String) zu einer Box hinzufügen AWT, Swing, JavaFX & SWT 16
B SWT Text - zeilenumbruch AWT, Swing, JavaFX & SWT 2
TheWhiteShadow Swing Document Text Position in Pixel AWT, Swing, JavaFX & SWT 2
J Swing Text kürzendes JLabel AWT, Swing, JavaFX & SWT 12
J Swing TextArea mit nicht-editierbarem Text AWT, Swing, JavaFX & SWT 7
P Text in JPanel hinzufügen AWT, Swing, JavaFX & SWT 2
J Button soll nach Klick Text ändern und Programm in 3 Sekunden beenden AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben