# JavaFx - Button ActionEvent Probleme



## StepByStepButSlow (13. Jan 2018)

Einen schönen Tag alle miteinander,

mithilfe von Videos und Anleitungen arbeite ich mich gerade in JavaFx ein, bin jedoch jetzt auf einen Fehler(?) gestoßen, der mich ein wenig ratlos zurücklässt. Wie im unten stehenden Code zu sehen ist, habe ich beim testen zwei Buttons zwei verschiedene ActionEvents zugewiesen.

- einer füllt eine ComboBox mit zusätzlichen Items.
- einer füllt eine ListView mit zusätzlichen Items.

Über den Scenebuilder habe ich beiden Buttons die jeweilige void zugewiesen. Starte ich jedoch nun das Programm und drücke einen der beiden Buttons (egal welchen von beiden), wird sowohl der ComboBox, als auch der ListView, die Items zugewiesen.


```
package application;

import java.net.URL;
import java.util.ResourceBundle;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ListView;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

public class MainController implements Initializable {
    @FXML
    private TextField tfGet, tfSet;
    @FXML
    private ComboBox<String> combobox;
    @FXML
    private ListView<String> listview;
    @FXML
    private Button btnClick, btnOpenFrame, btnComboBoxAdd, btnListViewAdd, btnListViewItem;
   
   
    // ---------- GET-/ SET TEXT ----------
    @FXML
    private void transferText(ActionEvent event) {
        if (!tfGet.getText().equals("")) {
            tfSet.setText(tfGet.getText());
            tfGet.clear();
        } else {
            Alert alert = new Alert(AlertType.INFORMATION);
            alert.setTitle("Information Dialog");
            alert.setHeaderText(null);
            alert.setContentText("You have to type something into the upper TextField!");

            alert.showAndWait();
        }
    }
   
    // ---------- OPEN ANOTHER FRAME ----------
    @FXML
    private void openAnotherFrame(ActionEvent event) throws Exception {
        // open another frame
        Stage primaryStage = new Stage();
        Parent root = FXMLLoader.load(getClass().getResource("/application/SubframeTest.fxml"));
        Scene scene = new Scene(root);
        scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
        primaryStage.setScene(scene);
        primaryStage.show();
    }
   
    // ---------- COMBOBOX & ListView ----------   
    ObservableList<String> list = FXCollections.observableArrayList("Mark", "Tom", "John", "Jack");
    @Override
    // intialize starts when opening the frame
    public void initialize(URL location, ResourceBundle resources) {
        combobox.setItems(list);
        listview.setItems(list);
        listview.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
//        listview.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
    }
   
    @FXML
    private void comboChange(ActionEvent event) {
        System.out.println("Auswahl aus ComboBox: " + combobox.getValue());
    }
    @FXML
    private void comboAdd(ActionEvent event) {
        combobox.getItems().addAll("Rick", "Ben", "Steve", "Oliver");
    }
    @FXML
    private void listviewAdd(ActionEvent event) {
        listview.getItems().addAll("Rick", "Ben", "Steve", "Oliver");
    }
    @FXML
    private void listviewGetItemIndex(ActionEvent event) {
        int i = listview.getSelectionModel().getSelectedIndex();
        System.out.println("Selected Index: " + i);
    }

}
```

Ich vermute - da ich mich gerade erst frisch in JavaFx einarbeite - ich irgendwo einen grundlegenden Fehler eingearbeitet habe.
Hat jemand vielleicht eine Idee, wo das Problem liegen könnte?

Vielen Dank für eure Mühen.

Gruß
StepByStepButSlow


----------



## mrBrown (13. Jan 2018)

ListView und ComboBox weist du die selbe Liste zu


----------



## StepByStepButSlow (13. Jan 2018)

Hi und danke für deine schnelle Antwort. Das ich beiden die grundlegende Liste zuweise ist ja auch so von mir gewollt. Heißt das dann, dass das zusätzliche erweitern der Liste...



StepByStepButSlow hat gesagt.:


> @FXML
> *private* *void* comboAdd(ActionEvent event) {
> combobox.getItems().addAll("Rick", "Ben", "Steve", "Oliver");
> }
> ...



...sich aufgrund der initialen Listenzuweisung sich automatisch auf "alles" bezieht, was mit der gleichen Liste verknüpft ist?


----------



## StepByStepButSlow (13. Jan 2018)

Okay, habe es jetzt ausgetestet und das Problem durch zwei (wie von dir angemerkt) verschiedenen ArrayLists gelöst.
Nochmals danke für deine schnelle Antwort.


----------

