Nachdem mir Joreyk den Tipp gegeben hat die View in einer separaten Klasse zu verwalten, habe ich es versucht umzusetzen und es funktioniert. Allerdings frage ich mich, ob meine Umsetzung stilistisch in Ordnung ist, oder ob man doch noch was ändern muss.
Zunächst eine grafische Darstellung des Programmabschnitts, um die es hier gehen soll:

Hier der Code der Klasse MyView:
(ich habe die buttons und textfields in ner ArrayList verpackt, um den externen Zugriff zu erleichtern.)
Und hier ein kleiner Abschnitt wie ich die View im Anschluss funktionalisiert habe
Irgendwie soll man da auch noch einen "Controler" unterbringen. Man müsste folglich das Programm in 3 Abschnitte unterteilen. Könnte man das so verstehen, dass falschangaben vom Controler abgefangen werden? Sollte ich eine Controler class hinzufügen?[/SIZE]
Zunächst eine grafische Darstellung des Programmabschnitts, um die es hier gehen soll:

Hier der Code der Klasse MyView:
(ich habe die buttons und textfields in ner ArrayList verpackt, um den externen Zugriff zu erleichtern.)
Java:
public class MyView{
private ObservableList<String> listFr = FXCollections.observableArrayList();
private ListView<String> frenchList;
private ObservableList<String> listDe = FXCollections.observableArrayList();
private ListView<String> germanList;
private ArrayList<TextField> txtFldList;
private ArrayList<Button> btnList;
private final String NAME_LIST_TXTFLD[] = {"sheed name", "file name", "in french", "in german", "search a word"};
private final String NAME_LIST_BTN[] = {"export list", "safe", "search", "delete","delete list", "exit"};
private Text displayedText;
public MyView() {
frenchList = new ListView<>(listFr);
germanList = new ListView<>(listDe);
txtFldList = new ArrayList<>();
btnList = new ArrayList<>();
}
public Scene setView(){
controler = new Text("Click on the List \nor write the word");
VBox vBox = new VBox();
HBox hBoxBtnList = new HBox();
HBox hBoxTxtFldList = new HBox();
HBox hBox3 = new HBox(displayedText);
HBox hBoxListContainer = new HBox(new VBox(new Label("Liste Deutsch:"), germanList), new VBox(new Label("Liste foreign language:"), frenchList));
germanList.getStyleClass().add("listDe");
frenchList.getStyleClass().add("listFr");
germanList.setPrefSize(450, 550);
frenchList.setPrefSize(450, 550);
vBox.getChildren().addAll(hBoxBtnList,hBoxTxtFldList,hBox3,hBoxListContainer);
for(String btnName : NAME_LIST_BTN ) {
Button btn = new Button(btnName);
btnList.add(btn);
hBoxBtnList.getChildren().add(btn);
}
for(String txtFldName : NAME_LIST_TXTFLD) {
TextField txtFld = new TextField();
txtFld.setPromptText(txtFldName);
txtFld.getStyleClass().add("textfield");
txtFldList.add(txtFld);
hBoxTxtFldList.getChildren().add(txtFld);
}
for(int i = 0; i < vBox.getChildren().size(); i++) {
vBox.getChildren().get(i).getStyleClass().add("hbox" + String.valueOf(i+1));
}
hBoxBtnList.getChildren().get(0).getStyleClass().add("first-btn");
displayedText.getStyleClass().add("text1");
vBox.getStyleClass().add("vbox");
// click on the List item in order to delete them
frenchList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
germanList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
Scene scene = new Scene(vBox, 900, 600);
scene.getStylesheets().add(getClass().getResource("stylesheet2.css").toExternalForm());
return scene;
}
public ObservableList<String> getStringListDe() {
return listDe;
}
public ObservableList<String> getStringListFr() {
return listFr;
}
public ListView<String> getListViewFr() {
return frenchList;
}
public ListView<String> getListViewDe() {
return germanList;
}
public Button getButton(int index) {
return btnList.get(index);
}
public String getTxt(int index) {
return txtFldList.get(index).getText();
}
public TextField getTxtField(int index) {
return txtFldList.get(index);
}
public void clearTxtfldDeFr() {
txtFldList.get(3).clear();
txtFldList.get(2).clear();
}
public Text getControler() {
return displayedText;
}
}
Und hier ein kleiner Abschnitt wie ich die View im Anschluss funktionalisiert habe
Java:
public class ListStage {
private ExportList exportList;
private MyView myView;
private Stage stage;
public ListStage() {
myView = new MyView();
stage = new Stage();
}
public void start() {
Scene scene = myView.setView();
myView.getButton(0).setOnMouseClicked(e1 -> exporter());
myView.getButton(1).setOnMousePressed(e2 -> safe());
myView.getButton(2).setOnMouseClicked(e3 -> search());
myView.getButton(3).setOnMouseClicked(e4 -> delete());
myView.getButton(4).setOnMouseClicked(e5 -> deleteAll());
myView.getButton(5).setOnMousePressed(e5 -> exit());
// delete items by clicking on the list
myView.getListViewDe().setOnMouseClicked(e6 -> clickOnTheList(e6));
myView.getListViewFr().setOnMouseClicked(e7 -> clickOnTheList(e7));
// switch from french-textfield to german-textfield and safe the new Word by pressing ENTER
myView.getTxtField(2).setOnKeyPressed(e8 -> switchTxtFieldsFrDe(e8));
myView.getTxtField(3).setOnKeyPressed(e9 -> switchTxtFieldsDeFr(e9));
stage.setMinWidth(790.0);
stage.setScene(scene);
stage.show();
}
Irgendwie soll man da auch noch einen "Controler" unterbringen. Man müsste folglich das Programm in 3 Abschnitte unterteilen. Könnte man das so verstehen, dass falschangaben vom Controler abgefangen werden? Sollte ich eine Controler class hinzufügen?[/SIZE]
Zuletzt bearbeitet von einem Moderator: