Ich beschäftige mich gerade mit der ObservableList und habe ein Übungsbeispiel gefunden.
Das Beispiel funktioniert problemlos, nur weiß ich nicht warum ......
Konkret verstehe ich nicht, warum es zur Ausgabe der Liste im Textfeld folgende Anweisungen braucht, speziell die Anweisung tf.getText() , die ja nur eine leere Zeile bedeutet. Lasse ich tf.getText() weg, wird immer nur die letzte Eintragung angezeigt, warum ????
Vielen Dank im Voraus!!
Das Beispiel funktioniert problemlos, nur weiß ich nicht warum ......
Konkret verstehe ich nicht, warum es zur Ausgabe der Liste im Textfeld folgende Anweisungen braucht, speziell die Anweisung tf.getText() , die ja nur eine leere Zeile bedeutet. Lasse ich tf.getText() weg, wird immer nur die letzte Eintragung angezeigt, warum ????
Vielen Dank im Voraus!!
Java:
tf.setText("");
// Iterator für die beobachtbare Liste
for (Iterator<String> it = observableList.iterator(); it.hasNext();) {
tf.setText(tf.getText() + it.next() + "\n");
}
}
Java:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javax.swing.JOptionPane;
/**
*
* @author Mario
*/
public class MyOList extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
btn.setText("Erweitere Liste");
final TextArea tf = new TextArea();
final Label lb = new Label();
lb.setText("Größe der Liste: 0");
final List<String> liste = new ArrayList<>();
// Beobachten der Liste mit ObservableList.
final ObservableList<String> observableList
= FXCollections.observableList(liste);
observableList.addListener(new ListChangeListener() {
@Override
public void onChanged(ListChangeListener.Change change) {
tf.setText("");
// Iterator für die beobachtbare Liste
for (Iterator<String> it = observableList.iterator(); it.hasNext();) {
tf.setText(tf.getText() + it.next() + "\n");
}
}
});
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
// Liste wird erweitert
String namen = JOptionPane.showInputDialog(null, "Geben Sie einen Namen eine");
observableList.add(namen);
lb.setText("Größe der Liste: " + observableList.size());
}
});
VBox root = new VBox();
root.getChildren().addAll(btn, lb, tf);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Collection!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}