ComboBox und ActionListener

Status
Nicht offen für weitere Antworten.

madmix

Mitglied
Hallo Leut

Ich hab ein kleines Problemchen welches ihr mir vieleicht helfen könnt zu lösen.
Und zwar habe ich eine Swing Application, die zwei RadioButtons, eine ComboBox und ein frame beinhaltet.
Ich habe vor die ComboBox mit Einträgen zu füllen, die ich aus Textdateien auslese, in eine Variable schreibe und diese mit split() als Array definiere.
Dieses Array wird dann an die ComboBox übergeben und angezeigt.
Bis dato klappt das alles super (sofern ich dies im Konstruktor selbst realisiere).

Nun aber zum eigentlichen Haupproblem.
Ich möchte das beim Selectieren der RadioButtons unterschiedliche Texdateien eingelesen und deren Inhalt in der ComboBox angezeigt werden.
Sprich, klicke ich auf radio 1 zeige mit den Inhalt von Textdatei1 in der ComboBox, klicke ich auf radio 2 zeige mir den Inhalt von Textdatei 2 in der ComboBox.
Der Hintergrund hier ist, das ich unterschiedliche Datenbanken, die einmal Lokal und einmal Extern also auf einem Server im Netz, liegen, unabhängig voneinander angezeigt bekommen möchte.
Weiterhin benötige ich diese RadioSelectionen um beim Klick auf eine Datenbank aus der ComboBox heraus die unterschiedlichen Zugangsparameter für die Datenbanken zu nutzen (das zu der Motivation der Übung).

Ich möchte das gerne über einen ActionListener realisieren, was aber so nicht ganz funktioniert (hier ist das Problem).

Versuche ich die ComboBox innerhalb der Listener neu zu setzen bekomme ich lediglich irgendwelche Pfade in der ComboBox angezeigt, nicht aber den Inhalt des Arrays.
Versuche ich das Array nur innerhalb der listener zu definieren und an den Konstruktor zu übergeben scheitere ich genauso kläglich.

Zur Kontrolle ob der Einlesevorgang auch funtioniert lasse ich mir die Variable anzeigen, die den Inhalt der Textdateien aufnimmt (hier gibt es keine Probleme).

Ich habe euch hier mal den Code beigefügt, wäre genial wenn ihr mir da weiterhelfen könntet.
Mein Dozent kann es jedenfalls nicht....*gg*

Vieleicht muss ich ja nur die Array Variable anders an den Konstruktor übergeben, oder so ???
Ich wäre auch für eine anderen Lösung dankbar, sofern sie den funktioniert.

P.S. Die Textdateien sind übrigends vorhanden und beihalten bereits Einträge zu meinen Datenbanken.
Solltet ihr das Script also ausprobieren wollen, so müsstet ihr diese Dateien selbst noch anlegen und füllen.

Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.sql.SQLException;
import javax.swing.*;
 
public class ComboBoxTest extends JFrame {
    
    public JButton buttonInsert, buttonReset, buttonConnect,buttonConnectEx,buttonOk;
    public JTextArea frame, frameResult;
    public JTextArea frameTable;
    public JComboBox comboTable,comboTableEx;
    public File openFile;
    public String result,resultEx;
    public ButtonGroup group;
    public String testtext;
    public int ausgabe = 0;
    public JRadioButton radio1,radio2;
    public String[] lang = { "" };
    
    public ComboBoxTest() {
        
        super();
        
        // ContainerPanel für ResultBereich
        JPanel content3 = new JPanel();
        this.getContentPane().setLayout(new BorderLayout());
        frameResult = (JTextArea) new JTextArea(5,30);
        frameResult.setBorder(BorderFactory.createLineBorder(Color.black));
        frameResult.setText(testtext);
        JScrollPane scrollPane1 = new JScrollPane(frameResult);
        scrollPane1.setPreferredSize(new Dimension(400, 50));
        
        content3.add(scrollPane1);
        // ContainerPanel für ComboBox Begleitlabel und ComboBox
        JPanel content1 = new JPanel();
        this.getContentPane().setLayout(new BorderLayout());
        radio1 = new JRadioButton("lokal");
        radio1.setLocation(100,40);
        radio2 = new JRadioButton("extern");
        radio2.setLocation(150,40);
        radio1.setSelected(true);
        group = new ButtonGroup();
        group.add(radio1);
        group.add(radio2);
        radio1.addItemListener(new BoxenEreignis());
        radio2.addItemListener(new BoxenEreignis());
        content1.add(radio1);
        content1.add(radio2);
        
        JPanel content2 = new JPanel();
        this.getContentPane().setLayout(new BorderLayout());
        comboTable = new JComboBox();
        comboTable.setSelectedItem(lang);
        comboTable.setSize(250,10);
        comboTable.setBackground(Color.WHITE);
        comboTable.setEditable( true );
        comboTable.setMaximumRowCount( 4 );
        content2.add(comboTable);
        
        JPanel contentContain = new JPanel();
        this.getContentPane().setLayout(new BorderLayout());
        contentContain.add(content1, BorderLayout.NORTH);
        contentContain.add(content2, BorderLayout.CENTER);
        contentContain.add(content3, BorderLayout.SOUTH);
        // Aufruf
        this.setContentPane(contentContain);
        this.pack();
    }
 
    class BoxenEreignis implements ItemListener {
        public void itemStateChanged(ItemEvent ei) {
            if (radio1.isSelected()) {
                
                try 
                { 
                  FileReader file = new FileReader( "db.txt" ); 
                  BufferedReader reader = new BufferedReader(file);
                  result="";
                  String dbValue;
                while((dbValue = reader.readLine()) != null) {
                      if(result == null) result = "";
                      result += dbValue ;
                  }
                comboTable.removeItem(lang);
                lang = result.split(",");
                comboTable.addItem(lang);
                } catch ( IOException e ) { 
                  frameResult.setText("Fehler beim Lesen der Datei!"); 
                } 
            }
            if (radio2.isSelected()) {
                try 
                { 
                  FileReader file = new FileReader( "dbExName.txt" ); 
                  BufferedReader reader = new BufferedReader(file);
                  result="";
                  String dbValue;
                  while((dbValue = reader.readLine()) != null) {
                      if(result == null) result = "";
                      result += dbValue;
                  }
                  comboTable.removeItem(lang);
                  lang = result.split(",");
                  comboTable.addItem(lang);
                  
                } catch ( IOException e ) { 
                  frameResult.setText("Fehler beim Lesen der Datei!"); 
                } 
            }
            frameResult.setText(result);
        }
    }
    public static void main(String[] args) {
        ComboBoxTest fenster = new ComboBoxTest();
        fenster.pack();
        fenster.setTitle("SQL-QueryPage");
        fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fenster.setSize(450,150);
        fenster.setLocation(380, 50);
        fenster.setResizable( false );
        fenster.setVisible(true);   
    }
}

Besten Dank im Voraus
Mad
 

Michael...

Top Contributor
Ohne jetzt alles durch gelesen zu haben, würde ich sagen benutze ein ComboBoxModel, am einfachsten nimmst Du DefaultComboBoxModel hier kann man dann beliebig Elemente löschen und einfügen und die ComboBox aktualisiert sich automatisch.
 

Spin

Top Contributor
Also: Mit JComboBox erstellst du nach deinen Java Code eine Leere JComboBox und setzt sie irgendwo ins Panel ;)

Doch ich frage mich wo du in deinem Code , der JComboBox deine Daten hinzufügst.

Du sagst lediglich , dass result mit den Werten der DB gefüllt werden soll , aber doch nicht dass sie auch der ComboBox angehören.

versuch doch mal zwischendruch : comboTable.addItem(dbValues);

Über Das Model kann man es mit addElement machen usw..
 

madmix

Mitglied
Hinzugefügt werden die Daten im Listener.

Ich habe aber bereits eine Lösung für mein Problem.
Ich hatte im Listener versucht die Array Variable direkt an die ComboBox zu übergeben, anstatt sie nocheinmal als neuen String auszulesen und diesen zu nutzen.

Wichtig hierbei sind drei Zeilen im Listener

Java:
lang = result.split(",");
for (String eintrag:lang)
comboTable.addItem(eintrag);

und das die eingelesenen Dateien eine eigene Methode erhalten, so das ich das einlesen nicht doppelt vollführen muss.

Hier der geänderte Listener für alle die vieleicht die gleichen Probleme haben wie ich und eine passable Lösung suchen.

Java:
    class BoxenEreignis implements ItemListener {
        public void itemStateChanged(ItemEvent ei) {
            if (radio1.isSelected()) {
                fileToGui("db.txt");
                ausgabe = 1;
            }
            if (radio2.isSelected()) {
                fileToGui("dbExName.txt");
                ausgabe = 2;
            }
        }
        private void fileToGui(String filename) {
            String result="";
            String dbValue;
            String[] lang;
           
            try
            {
              FileReader file = new FileReader( filename );
              BufferedReader reader = new BufferedReader(file);
 
               while((dbValue = reader.readLine()) != null) {
                  if(result == null) result = "";
                  result += dbValue ;
              }
             
              comboTable.removeAllItems();
              lang = result.split(",");
              for (String eintrag:lang)
                  comboTable.addItem(eintrag);

            } catch ( IOException e ) {
              frameResult.setText("Fehler beim Lesen der Datei!");
            }
        }
    }

So schreibe ich bei jedem Klick auf einen RadioButton die eingelesenen Daten in die ComboBox.
Danke nochmal an denjenigen der mir die Lösung vermitteln konnte.
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Rxiiz Objekt aus ComboBox entfernen Java Basics - Anfänger-Themen 4
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
T ComboBox getValue() zeigt null Java Basics - Anfänger-Themen 7
J Array an Combobox übergeben Java Basics - Anfänger-Themen 5
P JavaFX: Verständnisproblem bei ComboBox/ChoiceBox etc. Java Basics - Anfänger-Themen 9
Rubberduck Combobox-Werte in GUI anzeigen Java Basics - Anfänger-Themen 13
J Combobox füllen mit Wertausgabe von andere Klasse Java Basics - Anfänger-Themen 3
D Custom Buttons oder Custom Combobox Java Basics - Anfänger-Themen 30
G Verlassen einer ComboBox erkennen Java Basics - Anfänger-Themen 16
Mosquera Get String Array - ComboBox Java Basics - Anfänger-Themen 10
H Combobox abhängig von RadioButton Java Basics - Anfänger-Themen 4
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3
T Combobox Wert auslesen und damit weiterrechnen Java Basics - Anfänger-Themen 6
J ComboBox mittels neuer Methode befüllen Java Basics - Anfänger-Themen 3
J Interface Combobox Zustand speichern Java Basics - Anfänger-Themen 1
T Wenn Schaltjahr ist, soll Februar, einen Tag mehr haben, GUI mit combobox Java Basics - Anfänger-Themen 4
J Combobox Objekte Java Basics - Anfänger-Themen 10
kaoZ Input/Output Verzeichnis Inhalt in combobox ausgeben Java Basics - Anfänger-Themen 8
V ComboBox Ergebnisse abhängig von anderer ComboBox - Wie? Java Basics - Anfänger-Themen 7
W Hilfe bei Combobox Java Basics - Anfänger-Themen 9
W GUI Label, ComboBox Java Basics - Anfänger-Themen 4
C Combobox in Abhängigkeit von Spinner Java Basics - Anfänger-Themen 6
D Wert von Combobox in Datei schreiben Java Basics - Anfänger-Themen 2
J Combobox in andere Klasse übergeben Java Basics - Anfänger-Themen 3
B ComboBox(editable) - Text verändern Java Basics - Anfänger-Themen 7
H String aus Combobox auslesen Java Basics - Anfänger-Themen 2
I ComboBox mit Icons + Mehr...! Java Basics - Anfänger-Themen 6
1 Combobox anzeige Java Basics - Anfänger-Themen 7
1 combobox nicht an fesnter angeknüpft Java Basics - Anfänger-Themen 2
1 ComboBox Java Basics - Anfänger-Themen 4
S ComboBox Spielautomat Java Basics - Anfänger-Themen 3
F ComboBox sowie String in einer JTable Spalte Java Basics - Anfänger-Themen 2
H Darstellung ComboBox in jTable Java Basics - Anfänger-Themen 5
M Combobox Problem Java Basics - Anfänger-Themen 3
D ArrayList<String> to Combobox Java Basics - Anfänger-Themen 7
Spin ComboBox Java Basics - Anfänger-Themen 4
J Taschenrechner Combobox Reaktion auf Auswahl Java Basics - Anfänger-Themen 2
S AWT ComboBox Ausgaba Java Basics - Anfänger-Themen 5
K rückgabewert combobox Java Basics - Anfänger-Themen 15
E ComboBox werte auslesen Java Basics - Anfänger-Themen 4
E Combobox Auswahl überprüfen Java Basics - Anfänger-Themen 7
B ComboBox Größe ändern Java Basics - Anfänger-Themen 4
D ComboBox Java Basics - Anfänger-Themen 10
N nicht editierbare combobox davon oberstes element auslesen? Java Basics - Anfänger-Themen 5
H combobox auf leeres Feld prüfen? Java Basics - Anfänger-Themen 10
F ComboBox im Vektor auslesen, Vektor<JComboBox> Java Basics - Anfänger-Themen 6
D ComboBox auf <empty> überprüfen Java Basics - Anfänger-Themen 2
P Item in ComboBox manuell hinzufügen? Java Basics - Anfänger-Themen 3
C Welche Elemente sind in der ComboBox? Java Basics - Anfänger-Themen 3
G Wie doppelte Einträge in ComboBox vermeiden ? Java Basics - Anfänger-Themen 9
P Wert aus JTree in ComboBox setzen? Java Basics - Anfänger-Themen 2
D Combobox mit array abhängig von anderer Combobox mit array Java Basics - Anfänger-Themen 4
R Symbolschrift in einer ComboBox! Java Basics - Anfänger-Themen 10
G itemlistener bei combobox? Java Basics - Anfänger-Themen 10
G ComboBox und Arrays Inhalt speichern/ausgeben Java Basics - Anfänger-Themen 7
G ComboBox mit identischen einträgen Java Basics - Anfänger-Themen 2
G ComboBox in eine JTable einbinden Java Basics - Anfänger-Themen 2
A Combobox Struts Java Java Basics - Anfänger-Themen 7
S Größe einer Combobox Java Basics - Anfänger-Themen 5
S Combobox mehrfach verwenden Java Basics - Anfänger-Themen 3
A ComboBox mit unique Werten Java Basics - Anfänger-Themen 2
T ComboBox.GetSelectedIndex() gibt immer nur 0 zurück. Java Basics - Anfänger-Themen 2
H ComboBox zur Laufzeit erzeugen? Fehler. Java Basics - Anfänger-Themen 8
S Combobox mit Icons Java Basics - Anfänger-Themen 3
D wieso ist die combobox nicht von anfang an aktiviert? Java Basics - Anfänger-Themen 4
L Aktual.problem einer Var. wenn ComboBox Element ausgewählt Java Basics - Anfänger-Themen 4
D ComboBox mit Daten einer Datenenbank Java Basics - Anfänger-Themen 8
A Combobox füllen Java Basics - Anfänger-Themen 4
C Combobox mit "History" Java Basics - Anfänger-Themen 3
W Mehrfacheinträge in ComboBox Java Basics - Anfänger-Themen 8
M String Array in ComboBox toString() Java Basics - Anfänger-Themen 2
E ActionListener Java Basics - Anfänger-Themen 4
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
C JButton reagiert nicht auf actionListener Java Basics - Anfänger-Themen 15
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
J Array Actionlistener Java Basics - Anfänger-Themen 9
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
P Erste Schritte ActionListener Java Basics - Anfänger-Themen 2
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
J Erste Schritte Actionlistener für tbar/ JButton Java Basics - Anfänger-Themen 15
krgewb ActionListener Java Basics - Anfänger-Themen 1
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
F ActionListener mit Files etc Java Basics - Anfänger-Themen 12
N Probleme mit dem ActionListener Java Basics - Anfänger-Themen 4
CptK Auf ActionListener von anderer Klass aus zugreifen Java Basics - Anfänger-Themen 5
F Mehrere Buttons mit einem ActionListener abdecken Java Basics - Anfänger-Themen 24
U ActionListener mit JMenuItems verknüpfen Java Basics - Anfänger-Themen 1
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
L Problem bei Java-ActionListener Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
D Einen Wert unter einen ActionListener weitergeben Java Basics - Anfänger-Themen 1
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
JavaNewbie2.0 ActionListener Java Basics - Anfänger-Themen 11
Voreck Actionlistener problem Java Basics - Anfänger-Themen 1
G Im ActionListener eine "äußere" Variable verändern Java Basics - Anfänger-Themen 13
T Fehler beim ActionListener Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben