Liste - ListView wird nicht angezeigt

canyakan95

Bekanntes Mitglied
Hallo ich wollte eine Einkaufsliste schreiben wo ich ein Button "Getränke" habe.
Wenn ich drauf klicke sollte eine Liste von Getränken mir angezeigt werden, tut es aber nicht.
Nur verstehe ich leider nicht warum das bei mir nicht klappt oder was da noch fehlt.
Hoffe ihr könnt mir da weiterhelfen.
Mfg
Code:
import java.util.Observable;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class Einkaufszettel extends Application {

    public static void main(String[] args) {
       
        launch(args);
    }
   
    public void start(Stage primaryStage) throws Exception {
       
       
        Button b1 = new Button("Getränke");
        b1.setOnAction(new EventHandler<ActionEvent>() {
           
            public void handle (ActionEvent event){
               
                ListView<String> list = new ListView<>();
                ObservableList<String> items = FXCollections.observableArrayList(
                        "Cola","Fanta","Sprite","RedBull");
                list.setItems(items);
            }
        });
       
        HBox box1 = new HBox(b1);
        box1.setAlignment(Pos.BOTTOM_CENTER);
       
       
       
        BorderPane bp = new BorderPane();
        Scene scene = new Scene(bp,500,300);
       
       
        bp.setTop(box1);
        primaryStage.setTitle("Einkaufszettel");
        primaryStage.setScene(scene);
        primaryStage.show();
       
    }

   
   
}
 
Die ListView muss du einem Panel hinzuadden, z.bsp. hbox.getChildren)(.add(ListView).

In dem Fall wird die ListView jedes Mal wenn du den Button betätigst, neu instanziert. Wofür?
 
Ich weiß nicht genau was du mit der Liste in der handle Methode achen willst, aber wenn du nur einmal instanzieren willst, dann ja. und vor allem den Parent Container die List hinzufügen.
 
Mein Ziel war es wenn ich aufs button getränke drücke..das mir dann die getränke in einer liste angezeigt werden..
hoffe kannst mir dabei weiter helfen...
 
Also brauchst du nur eine Instanz der Liste, d.h. du kannst auch außerhalb der handle-Methode das machen.

Im stage-Methode die List instanzieren und hBox hinzufügen.
 
so vielleicht...

Code:
import java.util.Observable;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class Einkaufszettel extends Application {

     public static void main(String[] args) {
       
         launch(args);
     }
   
     public void start(Stage primaryStage) throws Exception {
         ListView<String> list = new ListView<>();
       
         Button b1 = new Button("Getränke");
         b1.setOnAction(new EventHandler<ActionEvent>() {
           
             public void handle (ActionEvent event){           
                 ObservableList<String> items = FXCollections.observableArrayList(
                         "Cola","Fanta","Sprite","RedBull");
                 list.setItems(items);
             }
         });
       
         HBox box1 = new HBox(b1);
         box1.setAlignment(Pos.BOTTOM_CENTER);
       
        // hier: box1.getChildren.add(list);
       
         BorderPane bp = new BorderPane();
         Scene scene = new Scene(bp,500,300);
       
        // oder hier: bp.setCenter(list);


         bp.setTop(box1);
         primaryStage.setTitle("Einkaufszettel");
         primaryStage.setScene(scene);
         primaryStage.show();
       
     }

   
   
}

Je nachdem zu welchem Container du die Liste hinzufügen willst, kann ich dir nicht sagen.
 
danke für eure hilfen..eine frage hätte ich da noch ...gibt es eine methode bei listview..womit ich z.b einen string hinzufügen..kann in die liste??
 
Und wie willst du zu der Liste den String ergänzen? Über einen Button, Textfeld, etc.?

An sich muss du nur items.add("Neues Element") machen, so wie bei einer normalen Liste.
 
Code:
import java.util.Observable;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Einkaufszettel extends Application {

    public static void main(String[] args) {
       
        launch(args);
    }
   
    public void start(Stage primaryStage) throws Exception {
       
        ListView<String> list = new ListView<>();
        list.setMaxHeight(100);
       
        Button b1 = new Button("Getränke");
        b1.setOnAction(new EventHandler<ActionEvent>() {
           
            public void handle(ActionEvent event){
               
                ObservableList<String> items = FXCollections.observableArrayList(
                        "Cola","Fanta","Sprite","RedBull");
                list.setItems(items);
               
            }
        });
       
        TextField text = new TextField();
        Button b2 = new Button("Hinzufügen");
        b2.setOnAction(new EventHandler<ActionEvent>() {
           
            public void handle(ActionEvent event){
               
                String eingabe = text.getText().toString();
                ObservableList<String> items = FXCollections.observableArrayList();
                items.add(eingabe);
            }
           
        });
       
        HBox box1 = new HBox(b1);
        box1.setAlignment(Pos.BOTTOM_CENTER);
        box1.setPadding(new Insets(10));
        box1.setSpacing(10);
        box1.getChildren().add(list);
       
        HBox box2 =new HBox(b2,text);
        box2.setAlignment(Pos.CENTER);
        box2.setPadding(new Insets(10));
        box2.setSpacing(10);
        box2.getChildren().add(list);
       
        BorderPane bp = new BorderPane();
        Scene scene = new Scene(bp,500,300);
       
       
        bp.setTop(box1);
        bp.setCenter(box2);
       
        primaryStage.setTitle("Einkaufszettel");
        primaryStage.setScene(scene);
        primaryStage.show();
       
    }

   
   
}

so aber wird die liste nur ersetzt...nicht hinzugefügt -.-
 
Code:
   public void start(Stage primaryStage) throws Exception {
        ObservableList<String> items = FXCollections.observableArrayList();
                list.setItems(items);

        ListView<String> list = new ListView<>();
        list.setMaxHeight(100);
      
        Button b1 = new Button("Getränke");
        b1.setOnAction(new EventHandler<ActionEvent>() {
          
            public void handle(ActionEvent event){
              
               items.addAll(
                        "Cola","Fanta","Sprite","RedBull");
              
            }
        });
      
        TextField text = new TextField();
        Button b2 = new Button("Hinzufügen");
        b2.setOnAction(new EventHandler<ActionEvent>() {
          
            public void handle(ActionEvent event){
              
                String eingabe = text.getText().toString();
                items.add(eingabe);
            }
          
        });

So kannst du machen. Was der Getränke Button genau macht? Kein PLan.
 

Neue Themen


Zurück
Oben