Hallo, ich komme aus der Sache leider seit gestern nicht raus.
Ich habe eine ListView. In dieser habe ich vier Textfelder drin und zwei Buttons mit + und -
Ich kann die UIControls in der ListView anzeigen, jedoch kann ich, wenn ich + drücke weitere Zeilen mit den UIControls nicht hinzufügen und mit - auch nicht löschen.
ich hoffe, man kann mir helfen.
Ich habe eine ListView. In dieser habe ich vier Textfelder drin und zwei Buttons mit + und -
Ich kann die UIControls in der ListView anzeigen, jedoch kann ich, wenn ich + drücke weitere Zeilen mit den UIControls nicht hinzufügen und mit - auch nicht löschen.
ich hoffe, man kann mir helfen.
Code:
package CreateSchemePackage;
import ViewAndController.ViewController;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import list.RowListCell;
import model.Model;
public class CreateSchemeView extends VBox {
Model model = new Model();
private final Button view = new Button("View");
private ObservableList<Model> rows = FXCollections.observableArrayList();
ListView<Model> list = new ListView<>();
StackPane root = new StackPane();
Pane pane = new Pane();
VBox vbox = new VBox();
HBox hbox = new HBox();
Button anzeigeListe = new Button("Listenanzeige");
Button save = new Button("Speichern");
public CreateSchemeView(final CreateSchemeController createSchemeController) {
initCreateScheme();
view.setOnAction(event -> {
System.out.println("ButtonB has been pressed, switching to ViewA.");
final Stage primaryStage = createSchemeController.getPrimaryStage();
final ViewController viewController = new ViewController(primaryStage);
final Scene scene = new Scene(viewController.getView(),250,600);
scene.getStylesheets().add("style.css");
primaryStage.setScene(scene);
});
}
public void initCreateScheme(){
view.setLayoutX(0);
view.setLayoutY(0);
vbox.setLayoutX(0);
vbox.setLayoutY(0);
vbox.setMaxWidth(200);
vbox.setMaxHeight(800);
hbox.setLayoutX(205);
rows.add(model);
list.setCellFactory(c -> new RowListCell());
list.setItems(rows);
vbox.getChildren().addAll(anzeigeListe, save);
root.setLayoutX(205);
root.setLayoutY(0);
root.setPrefWidth(900);
root.setPrefHeight(700);
root.getChildren().addAll(list);
hbox.getChildren().addAll(root);
pane.getChildren().addAll(vbox, hbox);
this.getChildren().addAll(view, pane);
}
public Button getCreateSchemeView() {
return view;
}
}
Code:
package list;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.Button;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.ListCell;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import model.Model;
public class RowListCell extends ListCell<Model> {
private ObservableList<Model> rows = FXCollections.observableArrayList();
private HBox content = new HBox();
private TextField tf0 = new TextField();
private TextField tf1 = new TextField();
private TextField tf2 = new TextField();
private TextField tf3 = new TextField();
private Button add = new Button("+");
private Button sub = new Button("-");
Model model = new Model(tf0, tf1, tf2, tf3);
public RowListCell() {
content.getChildren().addAll(tf0, tf1, tf2, tf3, add, sub);
content.setSpacing(10);
setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
setGraphic(content);
}
protected void updateItem(Model item, boolean empty) {
super.updateItem(item, empty);
if (item == null || empty) {
setText(null);
setGraphic(null);
} else {
setGraphic(content);
//item.setValue(item.getTitle());
add.setOnAction(e -> {
Model newRow = new Model(tf0, tf1, tf2, tf3);
rows.add(newRow);
});
sub.setOnAction(e -> {
rows.remove(item);
});
}
}
}
Code:
package model;
import javafx.scene.control.TextField;
public class Model {
private TextField tf0;
private TextField tf1;
private TextField tf2;
private TextField tf3;
public Model(TextField tf0, TextField tf1, TextField tf2, TextField tf3) {
this.tf0 = tf0;
this.tf1 = tf1;
this.tf2 = tf2;
this.tf3 = tf3;
}
public Model() {}
public TextField getTF0() {
return tf0;
}
public void setTF0(TextField tf0) {
this.tf0 = tf0;
}
public TextField getTF1() {
return tf1;
}
public void setTF1(TextField tf1) {
this.tf1 = tf1;
}
public TextField getTF2() {
return tf2;
}
public void setTF2(TextField tf2) {
this.tf2 = tf2;
}
public TextField getTF3() {
return tf3;
}
public void setTF3(TextField tf3) {
this.tf3 = tf3;
}
}