Mehrfacherfassung in Swing GUI

didi577

Bekanntes Mitglied
Hallo,

ich baue mir gerade eineSwing Oberfläche auf der Daten erfasst werden können. Es müssen ein paar Mindestangaben (jcombobox) erfasst sein damit gespeichert werden kann. Das funktioniert auch beim ersten Datensatz. Sobald ich den zweiten, dritten etc. Datensatz erfasse schlägt die Mindestprüfung (methode) nicht mehr zu und es können leere Datensätze gespeichert werden.

Wo kann der Fehler liegen?
 

didi577

Bekanntes Mitglied
es ist jetzt nicht nur so dass leere Datensätze gespeichert werden sondern auch mehrere Datensätze. Ich klicke einmal auf Speichern und habe den Datensatz u.U. 6x in der DB also 6 Zeilen mit den selben Daten.
ohne die minimum Methode passiert das nicht, ich will mit dieser erreichen dass der Speichern Button erst funktioniert wenn die Mindestangaben erfasst sind, hier der Code:
Java:
private void minimum() {
     
     if (boxKurs.getSelectedIndex() >0 && boxDozent.getSelectedIndex() >0 && boxOrt.getSelectedIndex() > 0) {
       btnSpeichern.addActionListener(new SpeichernAction());
       
     }
   }

hier der code zum prüfen der Comboboxen:
Java:
private class BoxKursAction implements ActionListener {
     
     @Override
     public void actionPerformed(ActionEvent e) {
       
       if (boxKurs.getSelectedIndex() > 0) {
       } minimum();
     }}
   
   private class BoxDozentAction implements ActionListener {
     
     @Override
     public void actionPerformed(ActionEvent e) {
       
       if (boxDozent.getSelectedIndex() > 0) {
       } minimum();
     }}
   
   private class BoxOrtAction implements ActionListener {
     
     @Override
     public void actionPerformed(ActionEvent e) {
       
       if (boxOrt.getSelectedIndex() > 0) {
       } minimum();
     }}

0 der erste Eintrag in der Combobox und der darf nicht ausgewählt sein
 

Meniskusschaden

Top Contributor
Scheint so, als ob du dem Speichern-Button immer wieder neue ActionListener hinzufügst. Wenn man dann einmal speichern drückt, werden die natürlich auch alle ausgeführt.
 

didi577

Bekanntes Mitglied
Java:
private void minimum() {
     
     if (boxKurs.getSelectedIndex() >0 && boxDozent.getSelectedIndex() >0 && boxOrt.getSelectedIndex() > 0) {
       btnSpeichern.addActionListener(new SpeichernAction());
   
     }
   }
diese Methode rufe ich im Speichern Button auf. Kann es sein dass ich wie oben beschrieben bei Änderungen in den JComboboxen damit immer den Actionlistener aufrufe?
 

Meniskusschaden

Top Contributor
diese Methode rufe ich im Speichern Button auf.
Nein, die rufst du nicht im Speichern-Button auf.

Du hast noch drei andere ActionListener. Ich unterstelle mal, dass jeder davon bei genau einer ComboBox als ActionListener hinzugefügt wurde. Dann wird jedes Mal, wenn bei einer ComboBox etwas ausgewählt wurde und die Bedingung zutrifft, minimum() aufgerufen.

minimum() fügt dann dem Speichern-Button eine neue Instanz des ActionListeners SpeichernAction hinzu, und zwar tut sie das jedesmal wenn sie aufgerufen wird und die Bedingungen zutreffen. Wenn dann der Speichern-Button betätigt wird, feuert jede der SpeichernAction-Instanzen.

Also angenommen in zwei ComboBoxen ist bereits je ein Element selektiert und du selektierst nun auch eins in der dritten. Dann wird minimum() erstmals einen SpeichernAction-ActionListener zum Speichern-Button hinzufügen. Ab jetzt passiert also überhaupt etwas, wenn man Speichern drückt.

Selektierst du dann in irgendeiner ComboBox ein anderes Element, so wird minimum() wieder einen SpeichernAction-ActionListener zum Speichern-Button hinzufügen. Nun gibt es also zwei und wenn man Speichern drückt, werden beide das tun, was dort eben programmiert ist - also vermutlich einen Satz in die DB schreiben. Mit jedem Auswählen eines ComboBox-Elements kommt dann ein weiterer Listener hinzu.
Kann es sein dass ich wie oben beschrieben bei Änderungen in den JComboboxen damit immer den Actionlistener aufrufe?
Ja, dessen actionPerformed-Methode wird jedes Mal vom Swing-Framework aufgerufen, wenn bei der zugehörigen Komponenten das entsprechende Ereignis eintritt. Für SpeichernAction passiert das beim Drücken des Speichern-Buttons und für die drei anderen beim Selektieren eines Elements in der zugehörigen ComboBox.
 

didi577

Bekanntes Mitglied
ok Danke für deine Erklärungen zu meinem Problem. Ich dachte mir sowas. Habe alles zurückgedreht und suche mir eine andere Möglichkeit Mindestangaben zu prüfen. Die addActiolistener habe ich aus den Button wieder raus genommen so dass nur eine Instanz beim Programmstart erzeugt wird.
 

didi577

Bekanntes Mitglied
Hallo Meniskusschaden ;-),

habe jetzt umgebaut. Ohne actionListener zu nutzen. Ich arbeite jetzt mit setEnabled. Klappt fast gut.

Ein Speichernbutton soll erst aktiv werden wenn drei Comboboxen einen Wert größer null haben. Das klappt, der Button wird dann aktiv. Wenn ich aber vor dem Speichern eine der Comboboxen wieder auf 0 setze wir der Button nicht inaktiv. Das müsste er per Definition aber (nach meinem Verständnis).

die minimum Methode:
Java:
private void minimum() {
     
     if (boxKurs.getSelectedIndex() > 0 & boxDozent.getSelectedIndex() > 0 & boxOrt.getSelectedIndex() > 0) {
       btnSpeichern.setEnabled(true);
   
     }
   }

ich rufe minimum() beim Speichern und beim Neu Button auf
die ActionListener der Comboboxen:
Java:
private class BoxKursAction implements ActionListener {
     
     @Override
     public void actionPerformed(ActionEvent e) {
       
       if (boxKurs.getSelectedIndex() == 0) {
       } minimum();
       
     }}
   
   private class BoxDozentAction implements ActionListener {
     
     @Override
     public void actionPerformed(ActionEvent e) {
       
       if (boxDozent.getSelectedIndex() == 0) {
       } minimum();
     }}
   
   private class BoxOrtAction implements ActionListener {
     
     @Override
     public void actionPerformed(ActionEvent e) {
       
       if (boxOrt.getSelectedIndex() == 0) {
       } minimum();
     }}
was muss ich ändern?
 

Meniskusschaden

Top Contributor
Du rufst minimum() nur auf, wenn getSelectedIndex gleich 0 ist, minimum() tut jedoch nur dann etwas, wenn getSelectedIndex größer 0 ist. Das kann doch niemals gleichzeitig zutreffen.
 

Meniskusschaden

Top Contributor
Falsch @Meniskusschaden ;) minimum wird immer aufgerufen egal welcher Index ausgewählt wurde.
Die Einrückung stimmt einfach nicht.
Stimmt, habe ich übersehen.
Wenn ich aber vor dem Speichern eine der Comboboxen wieder auf 0 setze wir der Button nicht inaktiv. Das müsste er per Definition aber (nach meinem Verständnis).
Das passiert aber nicht von selbst. Du musst dafür schon irgendwo btnSpeichern.setEnabled(false) aufrufen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J SWING UI Designer und zeichnen Java Basics - Anfänger-Themen 4
G Maven Swing: Wie verwende ich WindowListener ? Java Basics - Anfänger-Themen 2
C Threads und Swing Java Basics - Anfänger-Themen 9
A Swing: Raumshiff Java Basics - Anfänger-Themen 3
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
nbergmann Wo ist javax.swing.JOptionPane gespeichert? Java Basics - Anfänger-Themen 4
StevenGG Java swing "New Integer" Java Basics - Anfänger-Themen 5
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
O ImageIcon, Swing Java Basics - Anfänger-Themen 1
O Swing JPanel Java Basics - Anfänger-Themen 4
F Swing - Fehler - Paint Methode Java Basics - Anfänger-Themen 7
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
mobaer Swing Timer stoppen Java Basics - Anfänger-Themen 3
M Wie kann ich hier ein Textfeld hinzufügen Java Swing? Java Basics - Anfänger-Themen 1
M SpielMenü mit Swing Java Basics - Anfänger-Themen 3
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
N javax swing JOptionPane Hilfe Java Basics - Anfänger-Themen 3
H Swing Button hat falsche Größe Java Basics - Anfänger-Themen 5
C Der Swing Layout-Manager hasst mich Java Basics - Anfänger-Themen 4
M Java swing im Browser starten Java Basics - Anfänger-Themen 0
M JavaFX in Swing-Applikationen einbetten Java Basics - Anfänger-Themen 5
Z Threads SWING mit EventQueue.invokeLater Java Basics - Anfänger-Themen 1
P JDK installieren javac behauptet Javax.swing existiert nicht Java Basics - Anfänger-Themen 8
K Ascii Converter mit Swing Java Basics - Anfänger-Themen 4
b1ck Interface Verständnisfrage zum GUI mit "swing" Java Basics - Anfänger-Themen 1
N Erste Schritte Karte in SWING Application Java Basics - Anfänger-Themen 4
D Datum aus Swing in MySQL DB speichern Java Basics - Anfänger-Themen 22
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
J Input/Output Charset Swing- Eingaben? Java Basics - Anfänger-Themen 8
S JUnit - Swing- Anwendung wird nicht neu gestartet Java Basics - Anfänger-Themen 0
Q Threads Threads in Swing Anwendungen Java Basics - Anfänger-Themen 5
B Swing intstalliert Eclips{}, mackiert Rot Java Basics - Anfänger-Themen 6
U Java Swing Timer mit ButtonKlick starten u. nach 12 Sekunden Befehl ausführen Java Basics - Anfänger-Themen 7
S Input/Output In Java Swing auf Button warten? Java Basics - Anfänger-Themen 9
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
G Performance - höhere Anzahl Swing Elemente Java Basics - Anfänger-Themen 5
B Java Swing "Zeichenfläche" Java Basics - Anfänger-Themen 1
O Alternative zum swing-Timer Java Basics - Anfänger-Themen 5
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
P Hintergrundbild in Swing einfügen Java Basics - Anfänger-Themen 3
C Swing frage Java Basics - Anfänger-Themen 8
T Rechenprogramm mit Swing Java Basics - Anfänger-Themen 3
K Swing Darstellungsproblem Java Basics - Anfänger-Themen 11
G Verständnisproblem mit swing Java Basics - Anfänger-Themen 6
P Swing - Blackscreen Java Basics - Anfänger-Themen 10
Y Random-Objekt und Swing Java Basics - Anfänger-Themen 4
M Klassen Hilfe bei SWING Java Basics - Anfänger-Themen 5
S GUI Problem: Swing Java Basics - Anfänger-Themen 8
M Javax.swing - Timer(2 Button) Java Basics - Anfänger-Themen 17
J Timer - Swing Java Basics - Anfänger-Themen 5
B Erste Schritte Primefaces -> Swing Gui Java Basics - Anfänger-Themen 7
T Swing, SWT oder JavaFX Java Basics - Anfänger-Themen 8
S Programmoberfläche mit Java-Swing - Herangehensweise Java Basics - Anfänger-Themen 20
E Fragen zu paintXXX in Swing Java Basics - Anfänger-Themen 7
D Erste Schritte bash-Befehl mit Swing ausführen Java Basics - Anfänger-Themen 8
A Alternative zum manuellen Swing programmieren?? Java Basics - Anfänger-Themen 4
S Android fuer Swing-Kenner..? Java Basics - Anfänger-Themen 6
J Swing Timer Java Basics - Anfänger-Themen 3
B Seltsamer Fehler in SWING anwendung Java Basics - Anfänger-Themen 2
D GPS Tracker Swing Java Basics - Anfänger-Themen 2
L Erste Schritte Swing oder SWT Paint mit Grafikkarte? Java Basics - Anfänger-Themen 7
B Einstieg in swing GUI Java Basics - Anfänger-Themen 7
S Swing Eingabe Erzwingen Java Basics - Anfänger-Themen 3
S Swing JTable Java Basics - Anfänger-Themen 7
Z Input/Output Programm mit Swing umsetzen Java Basics - Anfänger-Themen 6
K Eclipse wie Swing per Drag und Drop erstellen Java Basics - Anfänger-Themen 2
V Dropdown Button in einer GUI (Java Swing) Java Basics - Anfänger-Themen 12
S Swing, Gridbaglayout Panel in Panel;funzt nicht!! Java Basics - Anfänger-Themen 3
O swing komponenten werden nicht angezeigt Java Basics - Anfänger-Themen 6
S Swing, Panel über Hintergrundbild!! Java Basics - Anfänger-Themen 6
P Im Fenster bleiben (swing) Java Basics - Anfänger-Themen 16
M Einfacher Swing Wizard Java Basics - Anfänger-Themen 3
E Swing FileWrite?? Java Basics - Anfänger-Themen 3
S Umlaute in Swing-GUI Java Basics - Anfänger-Themen 8
K Drop-down Menü (swing) Java Basics - Anfänger-Themen 4
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6
M Swing Klasse auch per Kommandozeile starten? Java Basics - Anfänger-Themen 2
S JAVA Swing Eventlistener Java Basics - Anfänger-Themen 11
P Swing - Welche Klasse für ausgeben von Ergebnissen? Java Basics - Anfänger-Themen 3
V Swing Componenten werden auf Mac nicht angezeigt Java Basics - Anfänger-Themen 19
J Überfordert mit Swing Java Basics - Anfänger-Themen 5
B Baum > Baum-Swing Java Basics - Anfänger-Themen 4
B Bei Swing weg vom North-West-South-East-Prinzip Java Basics - Anfänger-Themen 2
K Swing Fenster jede sec.neuzeichnen Java Basics - Anfänger-Themen 14
F Werteübergabe in Swing Formularen (gui Builder) Java Basics - Anfänger-Themen 9
L Swing GridBagLayout Java Basics - Anfänger-Themen 3
K Bild als Hintergrund in einem Swing Fenster Java Basics - Anfänger-Themen 21
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
C Swing i.V.m. Threads Java Basics - Anfänger-Themen 2
J XML Viewer for Swing Java Basics - Anfänger-Themen 6
Y Anfänger Hausaufgabe... Swing Java Basics - Anfänger-Themen 6
W Zeichnen in Swing Java Basics - Anfänger-Themen 7
B Swing Applikation mit mehreren Klassen Java Basics - Anfänger-Themen 2
C Swing, Buttons Wert zuweisen Java Basics - Anfänger-Themen 3
Luk10 Swing timer und Threads Java Basics - Anfänger-Themen 4
J Java GUI in Swing und das MVC Paradigma Java Basics - Anfänger-Themen 3
M Swing Java Basics - Anfänger-Themen 7
B Verständnisproblem zu Swing und Methoden Java Basics - Anfänger-Themen 8
Luk10 Buch für Swing/Awt/Graphics Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben