Swing 3 JComboBoxen ausgelesen Elemente einzel ausgeben

sandaime

Mitglied
Hallo an alle,
dies ist mein erster Beitrag ich hoffe ihr könnt mir weiterhelfen. Ich habe eine GUI mit 3 ComboBoxen. In diese habe ich Items über ein Array manuell hinzugefügt. Nun möchte ich per Button Klick den Inhalt des ComboBoxes und einer TextArea in der Konsole ausgeben. Es findet auch eine Ausgabe statt jedoch von allen ComboBoxen und diese 3 mal mit dem Inhalt des TextAreas. Ich will jedoch dass die Ausgabe nur von der ausgewählten ComboBox und dem TextArea ausgegeben wird.

Hier ist der Code dazu vom ActionEvent Abschnitt:
Java:
    public void actionPerformed(ActionEvent ae) {
       
        /*Ein Versuch die Elemente von der JComboBox auszulesen und spaeter so in die txt datei zu uebertragen
         * aber auch auf der GUI die aktuellen Eintraege zu zeigen
         * */
       
       
        if(ae.getSource()==this.eingabeKnopf){
            if ("parameterKuerzel".equals(ae.getActionCommand()));{
                System.out.println(parameterKuerzel.getSelectedItem()+ " "+eingabeFeld.getText());
                parameterKuerzel.setSelectedItem("--");
            }
            if ("gaseKuerzel".equals(ae.getActionCommand()));{
                System.out.println(gaseKuerzel.getSelectedItem()+ " "+eingabeFeld.getText());
                gaseKuerzel.setSelectedItem("--");
            }
            if ("staubKuerzel".equals(ae.getActionCommand()));{
                System.out.println(staubKuerzel.getSelectedItem()+ " "+eingabeFeld.getText());
                staubKuerzel.setSelectedItem("--");
            }
        }
 

incluedu

Mitglied
Hallo sandaime

Dein Problem ist der ; nach der if abfrage, wenn du das Semikolon entfernst dann sollte es funktionieren so wie du gerne möchtest.

Java:
 if ("parameterKuerzel".equals(ae.getActionCommand())){
                System.out.println(parameterKuerzel.getSelectedItem()+ " "+eingabeFeld.getText());
                parameterKuerzel.setSelectedItem("--");
            }
 

incluedu

Mitglied
Dann muss es daran liegen das du das 'actionCommand' nicht richtig gesetzt hast. Das sollte irgendwie so ausschauen dort wo du deine 'Combobox' initialisierst.

Java:
        parameterKuerzel = new JComboBox<>(new String[]{"--", "param1", "param2", "param3"});
        parameterKuerzel.setActionCommand("parameterKuerzel");
        parameterKuerzel.addActionListener(this);

Vielleicht kannst du auch mal ein wenig mehr von deinem Code posten
 

sandaime

Mitglied
Danke für deine Antwort.
Hier der gesamte Code
Java:
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

public class EingabeGui extends JFrame implements ActionListener {

    /**
     Komische Anferoderun von Eclipe einfach hinzugefuegt ohne Wissen darueber
     */
    private static final long serialVersionUID = 1L;
   
    //Es werden die Variablen definiert
    JPanel eingabePanel;
    JButton eingabeKnopf;
    JButton loeschKnopf;
    JComboBox parameterKuerzel;
    JComboBox gaseKuerzel;
    JComboBox staubKuerzel;
    JList aktuelleEingabeListe;
    JLabel listTitel;
    JTextArea eingabeFeld;
   
    EingabeGui(){
       
        //Eine ComboBox mit allen moeglichen Parameter eintraegen
        String comboBoxListeParameter[] = {"--","ab","aq","as","az","bb","bq","cb",
        "cq","d0","dd","dq","gh","gx","gy","ha","hh","hp","hq","lc","lq",
        "nx","ny","nz","os","os NESTING","os -NESTING","os SCINOTAT",
        "BS=CBS","os PRFMOD","os SORRELAX","os SPECTRUM","os SPREAD"
        ,"qb","qq","qs","rb","rq","sd","sq","ti","tq","ux","uy",
        "vq","wb","wq","xO","xa","xb","xp","xq","y0","ya","yb","yp","yq","z0"};
       
        //Eine ComboBox mit allen moeglichen Gas eintraegen
        String comboBoxListeGase[] = {"--","so2", "no","no2","nox","bzl","tce","f","nh3",
                "hg","xx","odor","odor_nnn"};
       
        //Eine ComboBox mit allen moeglichen Staub eintraegen
        String comboBoxListeStaub[] = {"--","pm","pm-1","pm-2" ,"as","pb","cd","ni","hg","tl",
                "xx",};
       
        //Die ComboBoxen werden erst jetzt erstellt, damit die Eintraege von Arrays in den ComboBoxen aufgenommen werden
        parameterKuerzel = new JComboBox(comboBoxListeParameter);
        gaseKuerzel = new JComboBox(comboBoxListeGase);
        staubKuerzel = new JComboBox(comboBoxListeStaub);
        loeschKnopf = new JButton("entfernen");
        eingabeKnopf = new JButton("Parameter eingabe");
        aktuelleEingabeListe = new JList();
        eingabePanel = new JPanel();
        listTitel = new JLabel("Die aktuellen Eingaben sind");
        eingabeFeld = new JTextArea(1,8);
       
        //Dem Panel werden die Elemente hinzugefuegt Button, ComboBox, Liste, Label
        eingabePanel.add(parameterKuerzel);
        eingabePanel.add(gaseKuerzel);
        eingabePanel.add(staubKuerzel);
        eingabePanel.add(eingabeKnopf);
        eingabePanel.add(loeschKnopf);
        eingabePanel.add(listTitel);
        eingabePanel.add(aktuelleEingabeListe);
        eingabePanel.add(eingabeFeld);
       
        //Die Elemente bekommen einen ActionListener zugewisen
        parameterKuerzel.addActionListener(this);
        gaseKuerzel.addActionListener(this);
        staubKuerzel.addActionListener(this);
        eingabeKnopf.addActionListener(this);
        loeschKnopf.addActionListener(this);
       
        //Das Panel wird dem Fenster hinzugefuegt
        this.add(eingabePanel);
       
        //Der Titel, die Groesse und die Postition des Fensters werden festgelegt. Zudem kommt die Schliessfunktion hinzu
        this.setTitle("Parameter Eingaben");
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        this.setSize(550,300);
        this.setLocation(375, 175);
    }
   
    public static void main(String[] args) {
        EingabeGui eingabeFenster=new EingabeGui();
        eingabeFenster.setVisible(true);
    }

   
   
    public void actionPerformed(ActionEvent ae) {
       
        /*Ein Versuch die Elemente von der JComboBox auszulesen und spaeter so in die txt datei zu uebertragen
         * aber auch auf der GUI die aktuellen Eintraege zu zeigen
         * */
       
       
        if(ae.getSource()==this.eingabeKnopf);{
            if ("parameterKuerzel".equals(ae.getActionCommand()));{
                System.out.println(parameterKuerzel.getSelectedItem()+ " "+eingabeFeld.getText());
                parameterKuerzel.setSelectedItem("--");
            }
            if ("gaseKuerzel".equals(ae.getActionCommand()));{
                System.out.println(gaseKuerzel.getSelectedItem()+ " "+eingabeFeld.getText());
                gaseKuerzel.setSelectedItem("--");
            }
            if ("staubKuerzel".equals(ae.getActionCommand()));{
                System.out.println(staubKuerzel.getSelectedItem()+ " "+eingabeFeld.getText());
                staubKuerzel.setSelectedItem("--");
            }
        }
       
        if(ae.getSource()==this.loeschKnopf){
            try
            {
                File file = new File("C:/Users/user/Desktop/Beispiel.txt");
                FileWriter fw = new FileWriter(file);
                fw.write(parameterKuerzel.getSelectedItem() + " "+ eingabeFeld.getText()+"\r\n");
                fw.flush();
                fw.close();
            }
            catch( IOException ev )
            {
                ev.printStackTrace();
            }
        }
    }
}
 

incluedu

Mitglied
Hm ...

Bin mir nicht sicher ob ich genau verstehe was du machen möchtest.

Aber soweit ich es verstanden habe willst du das die Ausgabe nur dann erfolgt wenn du bei mindestens einer deiner drei 'ComboBoxen' etwas anderes als '--' ausgewählt hast.

Um das zu erreichen würde ich als erstes deinen 'ComboBoxen' einen Type zuweisen in deinem Fall den Type String. Das hat den Vorteil das du dich nicht mehr darum kümmern must was in der 'ComboBox' gespeichert ist. Außerdem sollte man variablen 'private' definieren.
Java:
    //Es werden die Variablen definiert
    private JPanel eingabePanel;
    private JButton eingabeKnopf;
    private JButton loeschKnopf;
    private JComboBox<String> parameterKuerzel;
    private JComboBox<String> gaseKuerzel;
    private JComboBox<String> staubKuerzel;
    private JList aktuelleEingabeListe;
    private JLabel listTitel;
    private JTextArea eingabeFeld;

Auf die 'ActionListener' bei den 'ComboBoxen' könntest du in diesem falle eigentlich verzichten da du die Action ja mit dem 'eingabeKnopf' machen möchtest.
Java:
        //Die Elemente bekommen einen ActionListener zugewisen
//        parameterKuerzel.addActionListener(this);
//        gaseKuerzel.addActionListener(this);
//        staubKuerzel.addActionListener(this);
        eingabeKnopf.addActionListener(this);
        loeschKnopf.addActionListener(this);

Bei deinem Event Handling must die wie ich schon sagte die Semikolon entfernen und statt der Abfrage auf das 'ActionCommand' das aktuell selektierte item von jeder 'ComboBox' mit '--' vergleichen. Wenn die Bedingung nicht erfüllt ist dann kannst du dein Ausgabe auf der Console machen.

Java:
        if (ae.getSource() == this.eingabeKnopf) {
            if (!parameterKuerzel.getSelectedItem().equals("--")) {
                System.out.println(parameterKuerzel.getSelectedItem() + " " + eingabeFeld.getText());
                parameterKuerzel.setSelectedItem("--");
            }
            if (!gaseKuerzel.getSelectedItem().equals("--")) {
                System.out.println(gaseKuerzel.getSelectedItem() + " " + eingabeFeld.getText());
                gaseKuerzel.setSelectedItem("--");
            }
            if (!staubKuerzel.getSelectedItem().equals("--")) {
               
System.out.println(staubKuerzel.getSelectedItem() + " " + eingabeFeld.getText());
                staubKuerzel.setSelectedItem("--");
            }
        }

Was mir auch noch aufgefallen ist an deinem Code, ist das du deinen JFrame falsch aufrufst, man sollte das in Swing immer mit 'InvokeLater' machen, wenn es dich interessiert warum dann google danach.
Ich würde mir das aber dennoch angewöhnen das ich es von Anfang an richtig machen auch wenn es so wie du es machst funktioniert.
Code:
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override public void run() {
                EingabeGui eingabeFenster = new EingabeGui();
                eingabeFenster.setVisible(true);
            }
        });
    }

Hoffe das hilft ein wenig, wenn nicht dann versuch doch nochmal mir zu erklären wie denn genau das gewünschte Ergebnis ausschauen soll (hab grad Zeit also kein Problem helfe gerne wenn ich denn kann).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
R Auswahl mehrerer JComboBoxen verknüpfne AWT, Swing, JavaFX & SWT 17
S Probleme mit JComboboxen(?) AWT, Swing, JavaFX & SWT 18
it_is_all Swing Mehrere JComboBoxen - wie die versch. Boxen mit ItemStateChange auslesen? AWT, Swing, JavaFX & SWT 3
A Swing zwei JComboBoxen miteinander vergleichen und anschließend Button umwandeln AWT, Swing, JavaFX & SWT 7
I Wie mehrere JComboBoxen in Abhängigkeit einer anderen Box ändern? AWT, Swing, JavaFX & SWT 8
G JComboBoxen synchronisieren AWT, Swing, JavaFX & SWT 8
M auslesen mehrerer JComboBoxen funktioniert nicht AWT, Swing, JavaFX & SWT 9
F JTable Spalte sortieren mit lauter JComboboxen ? AWT, Swing, JavaFX & SWT 15
G Zwei JComboBoxen AWT, Swing, JavaFX & SWT 5
S mehrere JComboBoxen und ActionListener AWT, Swing, JavaFX & SWT 7
H JComboBoxen dynamisch erzeugen AWT, Swing, JavaFX & SWT 3
B TableCellRenderer + JComboBoxen AWT, Swing, JavaFX & SWT 2
S Hilfe! Bekomme Daten nicht ausgelesen AWT, Swing, JavaFX & SWT 3
M Elemente statisch anordnen AWT, Swing, JavaFX & SWT 4
_user_q ChoiceBox Elemente: Sprache ändern AWT, Swing, JavaFX & SWT 7
T Elemente auf vorheriger Stage, nach Wechsel der Stage ansprechen AWT, Swing, JavaFX & SWT 32
Lunar Swing JFrame erstellt; weitere Elemente werden nicht eingefügt/sind nicht zu sehen AWT, Swing, JavaFX & SWT 4
J JavaFX JavaFX Splitpane - Zugriff auf die Controller der Elemente AWT, Swing, JavaFX & SWT 8
G Swing Variable Elemente für GroupLayout AWT, Swing, JavaFX & SWT 18
F JFrame zeigt nicht alle Elemente auf anhieb an AWT, Swing, JavaFX & SWT 4
J JavaFX Elemente werden nicht zu TableView hinzugefügt AWT, Swing, JavaFX & SWT 3
J JavaFX JavaFX Elemente an Fenstergröße skalieren AWT, Swing, JavaFX & SWT 5
M Schnittpunkte zwischen zwei Graphics2D Elemente ermitteln. AWT, Swing, JavaFX & SWT 5
T LayoutManager Anordnen der Elemente im GridBagLayout AWT, Swing, JavaFX & SWT 11
T AWT Grafik"Array" einzelne Elemente verschieben AWT, Swing, JavaFX & SWT 1
M JavaFX GUI-Elemente erstellen, nachdem die GUI geladen hat AWT, Swing, JavaFX & SWT 4
TheJavaKid JavaFX Elemente positionieren AWT, Swing, JavaFX & SWT 2
B Swing Auf JList-Elemente aus einer anderen Klasse zugreifen AWT, Swing, JavaFX & SWT 1
N JavaFX GUI Elemente einer anderen (FXML)Klasse ansprechen AWT, Swing, JavaFX & SWT 16
D JavaFX Elemente aus VBox unterscheiden AWT, Swing, JavaFX & SWT 1
K Kann nicht auf GUI Elemente zugreifen, mit einer Methode im Controller klappts, mit der anderen nich AWT, Swing, JavaFX & SWT 10
R Swing Elemente verschieben sich im GBL beim Ein/Ausblenden AWT, Swing, JavaFX & SWT 0
Z Swing Swing: Elemente werden doppel/verschoben gezeichnet, sind teils unsichtbar etc... AWT, Swing, JavaFX & SWT 10
wolfgang63 JavaFX Elemente einer Group entfernen AWT, Swing, JavaFX & SWT 1
D SWT SWT Elemente aus anderen Klassen aufrufen - Invalid thread access AWT, Swing, JavaFX & SWT 6
O Ähnliche GUI Elemente - vererbung?! AWT, Swing, JavaFX & SWT 0
M AWT Gui anzeige Probes - Elemente erscheinen nicht regelmäßig AWT, Swing, JavaFX & SWT 2
M Swing JTabbedPane: Tab-Elemente anpassen AWT, Swing, JavaFX & SWT 3
T Swing Elemente der JList überlappend darstellen AWT, Swing, JavaFX & SWT 5
K GUI Elemente über eine separate Textdatei beschriften? AWT, Swing, JavaFX & SWT 4
T Alle Swing-Elemente anzeigen AWT, Swing, JavaFX & SWT 9
M Swing Elemente im Dialog neu "laden". AWT, Swing, JavaFX & SWT 6
T JTree - Elemente mit Doppelklick auswählen AWT, Swing, JavaFX & SWT 6
L Swing ActionListener zugriff auf bestimmte Elemente AWT, Swing, JavaFX & SWT 3
S Elemente im Panel in richtige Ausgangsstellung bringen AWT, Swing, JavaFX & SWT 10
K LayoutManager Wieso verschwinden Elemente? AWT, Swing, JavaFX & SWT 20
M JFrame + JNA/aero modul - GUI Elemente so möglich? AWT, Swing, JavaFX & SWT 28
P Elemente einer JList ausgeben AWT, Swing, JavaFX & SWT 11
B JList zeigt Elemente nicht an AWT, Swing, JavaFX & SWT 3
R Größe/Anordnung der Gui-Elemente automatisch? AWT, Swing, JavaFX & SWT 6
S JVM von Oracle/Sun soll für AWT/SWING Elemente die die Optimierungen der NVidia Treiber verwenden AWT, Swing, JavaFX & SWT 3
C Swing JFrame nimmt keine anderen Elemente auf AWT, Swing, JavaFX & SWT 13
R JApplet, Elemente unsichtbar AWT, Swing, JavaFX & SWT 2
1 JList - Elemente mit rechter Maustaste wählen AWT, Swing, JavaFX & SWT 6
L ID für GUI Elemente generieren AWT, Swing, JavaFX & SWT 11
C SWT-Elemente an View-Fenster angleichen und automatisch resizen AWT, Swing, JavaFX & SWT 3
U Elemente im Panel zentrieren mit GridLayout AWT, Swing, JavaFX & SWT 3
P Elemente im Kreis aufstellen AWT, Swing, JavaFX & SWT 5
G Swing Elemente aus Arraylist auf JFrame anzeigen AWT, Swing, JavaFX & SWT 9
G GUI Elemente aus NetBeans verwenden AWT, Swing, JavaFX & SWT 8
L SWT tree elemente markieren AWT, Swing, JavaFX & SWT 4
C Swing Elemente in JList sortieren AWT, Swing, JavaFX & SWT 2
T Elemente zu JList dynamisch hinzufügen AWT, Swing, JavaFX & SWT 4
S JTree Elemente nach BaumLevel abspeichern AWT, Swing, JavaFX & SWT 2
S JTree & JComboBox - Elemente übers Fenster hinaus anzeigen AWT, Swing, JavaFX & SWT 9
F JScrollPane überlagert andere Elemente AWT, Swing, JavaFX & SWT 5
S Swing UI-Elemente ordnen sich ungewollt in einer Reihe (ohne Layout) AWT, Swing, JavaFX & SWT 5
K Swing Elemente auf Zeichenfeld verschieben AWT, Swing, JavaFX & SWT 8
S Mit eigener Klasse auf GUI-Elemente zugreifen AWT, Swing, JavaFX & SWT 3
E Swing JComboBox als CellEditor in JTable zeigt Elemente nicht sofort an AWT, Swing, JavaFX & SWT 5
R In JFrame oder in Canvas mit grafischen Elemente zeichnen AWT, Swing, JavaFX & SWT 2
E Swing JList zur Laufzeit hinzugefügt elemente nicht sichtbar?! AWT, Swing, JavaFX & SWT 2
S Swing Elemente einer JList Farbig hinterlegen AWT, Swing, JavaFX & SWT 6
B Swing Dynamisch Elemente in JScrollPane hinzufügen AWT, Swing, JavaFX & SWT 6
M Swing Von einem Controller aus View-Elemente ändern AWT, Swing, JavaFX & SWT 11
T DND mit JList Elemente nicht am Ende einfügen AWT, Swing, JavaFX & SWT 3
Tobse Swing JList elemente hinzufügen AWT, Swing, JavaFX & SWT 4
K JLayeredPane Elemente auf gleicher Position AWT, Swing, JavaFX & SWT 7
D Elemente werden nicht angezeigt AWT, Swing, JavaFX & SWT 2
W jComboBox unterschiedlich selectable elemente AWT, Swing, JavaFX & SWT 7
M Elemente in JTabbedPane platzieren AWT, Swing, JavaFX & SWT 7
N Swing JList Elemente ausgeben fehlerhaft AWT, Swing, JavaFX & SWT 4
M Swing Alle Elemente eines Panels? AWT, Swing, JavaFX & SWT 9
S Eigene GUI Elemente erstellen AWT, Swing, JavaFX & SWT 6
M.F.G. Fehler bei der Anzeige Grafischer Elemente AWT, Swing, JavaFX & SWT 13
B Swing Problem beim Elemente zu JList hinzufügen AWT, Swing, JavaFX & SWT 5
C (Swing)GUI-Elemente werden nicht aktualisiert. AWT, Swing, JavaFX & SWT 2
P JList: Reihenfolge der Elemente per Drag'n'Drop ändern. AWT, Swing, JavaFX & SWT 9
M Swing JList - Elemente umbenennen? AWT, Swing, JavaFX & SWT 4
MrMilti Gezeichnete Java2D Elemente mit Events versehen AWT, Swing, JavaFX & SWT 3
H [gelöst] Swing Elemente verdecken AWT, Swing, JavaFX & SWT 14
B In externer Eventhandlerklasse auf GUI-Elemente zugreifen AWT, Swing, JavaFX & SWT 3
K BoxLayout skaliert die "falschen" Elemente AWT, Swing, JavaFX & SWT 5
A SWT - Elemente zur Laufzeit ändern AWT, Swing, JavaFX & SWT 6
S Andere Elemente in JComboBox anzeigen AWT, Swing, JavaFX & SWT 2
T Elemente werden nicht direkt angezeigt AWT, Swing, JavaFX & SWT 3
S Nachträglich Swing-Elemente in JFrame erzeugen AWT, Swing, JavaFX & SWT 18
K Titel für eingebundene Elemente wie JPanel AWT, Swing, JavaFX & SWT 3
F Dynamische Swing Elemente AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben