JavaFX Zusammenzählen einer TableColumn

Faru12

Mitglied
Hallo zusammen,

Ich habe ein kleines Problem mit Javafx 8, bei dem ich einfach nicht weiterkomme...

Und zwar wähle ich mittels Comboboxen Früchte und deren Anzahl aus. Diese werden dann in eine Tabelle geschrieben.

Bspw. so
Apfel 5
Birnen 3
Apfel 2
Bananen 1

Ich möchte das Total pro Frucht in eine separate Tabelle schreiben. Das Einschreiben der Frucht in die andere / neue Tabelle habe ich mal. Das zusammenzählen der Werte klappt aber leider nicht. :shock: Kann mir da jemand evtl. helfen?

Vielen Dank


Aufbau meines Codes:
Java:
public class Fruits implements Initializable {

	// Tabellen und Spalten
    @FXML TableView<DataClass> fruitlist;
    @FXML TableColumn<DataClass, String> fruits;
    @FXML TableColumn<DataClass, Integer> qty;
    
    @FXML TableView<FruitClass> früchteliste;
    @FXML TableColumn<FruitClass, String> früchteSpalte;
    @FXML TableColumn<FruitClass, Integer> früchteAnzahl;
    
    // Button und Combobox
    @FXML Button addfruit;
    @FXML ComboBox<Integer> qty_combobox;
    @FXML ComboBox<String> fruits_combolist;
    
    // ObservableList
    ObservableList<DataClass> data;
    ObservableList<FruitClass> fruchtliste;
     
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        fruits.setCellValueFactory(new PropertyValueFactory<DataClass,String>("rfruits"));
        früchteSpalte.setCellValueFactory(new PropertyValueFactory<FruitClass, String>("rfrüchte"));
        früchteAnzahl.setCellValueFactory(new PropertyValueFactory<FruitClass, Integer>("rfrüchteanzahl"));
        qty.setCellValueFactory(new PropertyValueFactory<DataClass, Integer>("rqty"));
       
        data = FXCollections.observableArrayList();
        fruchtliste = FXCollections.observableArrayList();
     
        fruitlist.setItems(data);
        früchteliste.setItems(fruchtliste);
        
        // Setzen der Combobox Werte
        qty_combobox.getItems().clear();
        qty_combobox.getItems().addAll(0,1,2,3,4,5,6,7,8,9,
        		10,11,12,13,14,15,16,17,18,19,
        		20,21,22,23,24,25,26,27,28,29,30);
        
        fruits_combolist.getItems().clear();
        fruits_combolist.getItems().addAll("Apfel","Birnen","Bananen");
        
       }    
    
    // Event bei ButtonKlick
    @FXML
    private void handleButtonAction(ActionEvent event) {
    	
    		DataClass fruitline = new DataClass(); 
            fruitline.fruitdata.setValue(fruits_combolist.getValue());
            fruitline.qtydata.setValue(qty_combobox.getValue());
            data.add(fruitline);
            neueFruchtinListe();
    	}
    
  // Setzen der Frucht in Liste
    private String neueFruchtinListe() {
    	String frucht = null;
    	int n = 0;
    	for(int i = 0; i < fruchtliste.size(); i++) {
    		if(früchteSpalte.getCellData(i).equals(fruits_combolist.getValue())) {
    			n = n+1;
    		}
    		else {
    			n = n+0;
    		}
    	}
    	if(n<1) {
    		frucht = fruits_combolist.getValue();
    		FruitClass neueFrucht = new FruitClass();
    		neueFrucht.fruitdata.setValue(frucht);
    		fruchtliste.add(neueFrucht);
    	}
    	return frucht;
    }
 }

DataClass

Java:
public class DataClass {
	
	 	public SimpleStringProperty fruitdata = new SimpleStringProperty();
	    public SimpleIntegerProperty qtydata = new SimpleIntegerProperty();
	    
	    public Integer getRqty() {
	    	return qtydata.get();
	    }
	    
	    public String getRfruits() {
	        return fruitdata.get();
	    }
}

FruitClass

Java:
public class FruitClass {
	
	public SimpleStringProperty fruitdata = new SimpleStringProperty();
	public SimpleIntegerProperty fruitcount = new SimpleIntegerProperty();
	
	  public String getRfrüchte() {
	        return fruitdata.get();
	  }
	  
	  public Integer getRfrüchteanzahl() {
		  return fruitcount.get();
	  }
}
 

dzim

Top Contributor
Ich würde ja gern helfen, aber im Moment habe ich das Problem, dass ich deinen Workflow nicht verstehe. Was wird nun wo ausgewählt und wo angezeigt??? Kannst du vielleicht mal einen Screenshot anhängen? Wenn ich verstehe, was dein Workflow ist, komm ich vielleicht auch darauf, was eigentlich dein Problem ist...

BTW: Auch dein Programmierstil verwirrt mich gerade etwas.
 

Faru12

Mitglied
Hallo,

Ich habe einen Screenshot angehängt. Kurz zur Erklärung:
Bei 1. können die Früchte / Anzahl ausgewählt werden. Mit Klick auf Hinzufügen werden der Name und die Anzahl in die Tabelle (Punkt 2) übertragen. und bei 3 sollte die Summe pro Frucht dargestellt werden. Im Beispiel des Screenshots also: Apfel: 8, Birnen: 6, Bananen 24 (dorf wo jetzt noch 0en stehen).

BTW: Auch dein Programmierstil verwirrt mich gerade etwas.

Ich bin blutiger Anfänger :bahnhof: und über jedwede Hilfe / Anmerkung dankbar. Was könnte ich daran verbessern, resp. was verwirrt dich?
 

Anhänge

  • screenshot Früchte.pdf
    38,6 KB · Aufrufe: 19

dzim

Top Contributor
Nur kurz zum Code-Stil (wie ich ihn meist verwende):
"normale" Variablen:
Java:
private int value = myValue;
statische Variablen (alle Objekte dieser Klasse teilen sich diesen Wert - wird er an einer Stelle geändert, ändert er sich für alle Objekte), der Unterstrich ist hierbei allerdings Geschmackssache:
Java:
private static int value = my_value;
Konstate (also ein unveränderlicher Wert):
Java:
private static final int value = MY_VALUE;

Verwende sprechende Bezeichner - "qty" erschliesst sich zwar aus dem Kontext, aber verwende doch einfach "quantity".

Vermeide. wo möglich, denglisch. Ich persönlich (aber das ist wirklich meine Meinung!) empfinde so etwas wie getFrüchte einfach als Beleidigung für meine Augen.

getter (also wie man einen Wert aus einem Modellobjekt ausliest):
Java:
// Deine Variante ist etwas schräg.
// public String getRfrüchte() {...}

//  Die Konvention ist:
public String getFrüchte() {...}

Es bietet sich generell an, die Schreibweise für Getter und Setter <get|set>Variable zu verwenden, da einige Bibliotheken genau diese Schreibweise erwarten und versuchen Daten per Reflection (bitte hierzu mal Google fragen) auszulesen.
JavaFX erwartet zum Beispiel stellenweise noch drei Methode pro Variable:
Java:
public class Data {
    
        public SimpleStringProperty fruit = new SimpleStringProperty();
        public SimpleIntegerProperty quantity = new SimpleIntegerProperty();
        
        public Integer getQuantity() {
            return quantity.get();
        }

        public void setQuantity(Integer value) {
            return quantity.set(value);
        }

        public SimpleIntegerProperty quantityProperty() {
            return quantity;
        }
        
        // das Selbe für "fruit"
}

...und: Verwende setter und nicht public-Variablen (das musst du eigentlich nur in Performance-kritischen Umgebungen tun, selten im "normalen" Betrieb).
 
Zuletzt bearbeitet:

dzim

Top Contributor
Zu deinem Implementierungsproblem:
Wenn deine Anwendungg (was die Früchteauswahl angeht) so bleibt, also statisch ist, warum schreibst du nicht einfach die Werte rechts daneben in ein Label?

Ansonsten verwende JavaFX-Bindings: Hänge einen onChangeListener an die Liste für die erste Tabelle, die die Daten der zweiten anpasst, dann musst du nicht explizit jedes mal die Methode aufrufen.

Dein Grundsätzliches Problem aber dürfte hier die von mir im anderen Post genannte dritte Methode für deine Daten sein: [c]public SimpleIntegerProperty quantityProperty() {return quantity;}[/c]. Die PropertyValueFactory bekommt so wahrscheinlich schlicht nicht mit, wenn sich die Daten geändert haben.
 

Faru12

Mitglied
Verwende sprechende Bezeichner - "qty" erschliesst sich zwar aus dem Kontext, aber verwende doch einfach "quantity".

Vermeide. wo möglich, denglisch. Ich persönlich (aber das ist wirklich meine Meinung!) empfinde so etwas wie getFrüchte einfach als Beleidigung für meine Augen.

Gebe ich dir vollkommen recht. Die Bezeichnungen sindnicht gerade wirklich toll... :bloed:

Mit der getter / setter Methode und setValue habe ich das ganze dann geschafft!

Vielen Dank für deine Hilfe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Optimieren einer Methode zum Zentrieren von Fenstern AWT, Swing, JavaFX & SWT 0
T VerifyListener - Ersetzen einer 0 AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
N Dropshadow setzen bei einer Gruppe von Tiles, die sich jeweils in einer Stackpane befinden, welche in einer Gridpane angeordnet sind. AWT, Swing, JavaFX & SWT 0
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
H JavaFX Timeline II: Verschieben einer ImageView AWT, Swing, JavaFX & SWT 16
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
L Swing TextPanel Schrift untereinander und auf einer Höhe AWT, Swing, JavaFX & SWT 3
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
melaniemueller Wortliste in einer Datei ablegen AWT, Swing, JavaFX & SWT 12
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
U Was genau ist das Objekt einer affinentransformation? AWT, Swing, JavaFX & SWT 1
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
mac2010 JavaFX Einbindung einer Karte AWT, Swing, JavaFX & SWT 1
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
W Aufrufen einer bestimmten Scene mit if-Bedingung AWT, Swing, JavaFX & SWT 4
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Wiederholen einer IF-Abfrage beim erneuten Öffnen einer Stage AWT, Swing, JavaFX & SWT 11
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
N Einer TextArea ein ScrollPane hinzufügen AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
G Verknüpfung einer pdf Datei AWT, Swing, JavaFX & SWT 2
B Ausgaben einer Umrechnung vom Textfeld in ein Label AWT, Swing, JavaFX & SWT 2
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
@SupressWarnings() JavaFX Auf den Controller einer ListCell zugreifen AWT, Swing, JavaFX & SWT 4
Drachenbauer Swing Wie ändere ich den Hintergrund vom Anzeigefeld einer JComboBox, die nicht zum Hineinschreiben offen steht? AWT, Swing, JavaFX & SWT 32
H 3 verschiedene Nachrichten in einer FXML View die Infos kommen aus DB AWT, Swing, JavaFX & SWT 4
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
B Textfelder in einer ListView ausgeben AWT, Swing, JavaFX & SWT 13
J Searchfunktion auf einer MS Access Datenbank AWT, Swing, JavaFX & SWT 7
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
M Inhalte einer FlowPane AWT, Swing, JavaFX & SWT 4
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
FRI3ND JavaFX: Wie kann ich einer Scene Argumente übergeben? AWT, Swing, JavaFX & SWT 14
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
K JavaFX ViewTable mit einer LinkedList befüllen AWT, Swing, JavaFX & SWT 3
L CardLayout in einer Klasse? AWT, Swing, JavaFX & SWT 2
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
D Java FX Image in einer Webanwendung annotieren und den Bereich ausschneiden AWT, Swing, JavaFX & SWT 0
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing Ausführung einer SwingWorker Klasse stoppen AWT, Swing, JavaFX & SWT 4
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
xYurisha Aus einer Gui Buttons, Label und ProgessBars entfernen AWT, Swing, JavaFX & SWT 4
MiMa Selektion aus einer ListView AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J JFram Location aus Konstruktor einer anderen Klasse auslesen AWT, Swing, JavaFX & SWT 10
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
J Suche nach einer horizontal aufklappbaren Toolbar AWT, Swing, JavaFX & SWT 1
P Variable einer Eingabe in anderes Textfeld schreiben AWT, Swing, JavaFX & SWT 7
D JavaFX Einbinden einer .fxml AWT, Swing, JavaFX & SWT 1
B Zeile einer Tabelle selektieren AWT, Swing, JavaFX & SWT 1
A Prüfung einer Eingabe auf Gleitkommazahl AWT, Swing, JavaFX & SWT 5
J Suchmaschine einer Datenbank AWT, Swing, JavaFX & SWT 5
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9
M Auswahl aus einer ListView AWT, Swing, JavaFX & SWT 3
J JavaFX - Felder (Label) in einer ForSchleife bearbeiten AWT, Swing, JavaFX & SWT 4
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
C JavaFX Tief setzen in der Überschrift einer Tabellenspalte AWT, Swing, JavaFX & SWT 3
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
R Java FX - Fxml - relative Größenangaben für Breite und Höhe einer TextArea AWT, Swing, JavaFX & SWT 8
M Wert einer Zelle aus JTable ziehen AWT, Swing, JavaFX & SWT 4
P Einer JList mit eigenem ListModel einen Eintrag hinzfügen AWT, Swing, JavaFX & SWT 5
K JTable in extra Klasse, Zugriff in einer anderen klasse nicht möglich AWT, Swing, JavaFX & SWT 26
P JavaFX Slider soll Value erst ab einer bestimmten Bedinung aendern AWT, Swing, JavaFX & SWT 19
M Ausgabe der HSL oder RGB Zusammensetzung einer Farbe (JColorChooser AWT, Swing, JavaFX & SWT 1
X Zeilen aus einer Textdatei einzelnd als String abrufen AWT, Swing, JavaFX & SWT 8
R JavaFX Wert einer ChoiceBox bekommen ohne Lambdas AWT, Swing, JavaFX & SWT 11
W Swing bzgl. Tableskalierung/Darstellung einer Matrix AWT, Swing, JavaFX & SWT 8
F JavaFX ChoiceBox Name als Auswahl bei einer Objektliste AWT, Swing, JavaFX & SWT 4
F JavaFX Mit einer Methode auf Stage zugreifen. AWT, Swing, JavaFX & SWT 8
S Dreiecke in bestimmte Zellen einer JTable AWT, Swing, JavaFX & SWT 9
7 JavaFX Verwendung einer ResizableCanvas-Klasse in fxml-Datei AWT, Swing, JavaFX & SWT 3
K Swing JTable mit ImageIcon und Text in einer Zelle AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben