# Tabelle vergleichen



## Paul15 (2. Aug 2015)

Ich möchte 6 Daten aus einer Checkbox mit einer JTable zu vergleichen

es sollte dann 2 Möglichkeiten geben welche eintreten könnten

1. wenn die Zeile mit gleichen Werten schon besteht sollte diese in einer 7 Spalte um 1 hinaufgezählt werden

2. wenn sie noch nicht besteht soll eine neue gemacht werde


```
for (int down = model.getRowCount(),down != 0,down--)
     {
     
     
       if (bxCheckbox1.isSelected()==table.getValueAt(down,0) &&bxCheckbox2.isSelected()==table.getValueAt(down,1)&&bxCheckbox3.isSelected()==table.getValueAt(down,2)&&bxCheckbox4.isSelected()==table.getValueAt(down,3)&&bxCheckbox5.isSelected()==table.getValueAt(down,4)&&bxCheckbox6.isSelected()==table.getValueAt(down,5))
       {
         
         (table.getValueAt(down,6)+1).setValueAt(down,"col7");
         
        
         
       }
         
         
         
     }
```


----------



## JStein52 (3. Aug 2015)

Das Thema gehört sicher in das Swing-Forum. Aber du möchtest sicher den aktuellen Inhalt von Spalte 7 holen, mit Integer.parseInt in eine Zahl umwandeln und diese dann mit setValueAt aktualisieren.
Falls die Zeile noch nicht existiert (also der else-Zweig den du weggelassen hast) sollte dann mit addRow eine Zeile dazugefügt werden.
Und sämtliche Tabellenoperationen sollen doch bestimmt über das model ausgeführt werden, also model.getValueAt
model.setValueAt und model.addRow

Und was genau ist deine Frage ?


----------



## VfL_Freak (3. Aug 2015)

Moin,

nur mal so als Tipp: schau Dir Deine Deklaration der for-Schleife genauer an .....
Das würde wohl schon einen Compilerfehler vermeiden!

Gruß Klaus


----------



## JStein52 (3. Aug 2015)

Es gibt da noch mehr Kleinigkeiten die nicht so ganz stimmen. Ich denke mal du willst prüfen ob die Checkbox selektiert ist und ob der Buttontext in der Tabelle steht. Dein bxCheckbox1.isSelected() liefert true oder false zurück, je nach Selektion. Den Text dazu erhältst du dann mit bxCheckbox1.getText() ...

Jetzt solltest du doch ein gutes Stück weiterkommen.


----------



## Paul15 (3. Aug 2015)

Also ich habe einmal 6 Checkboxen von denen ich über einen Buttonclick 6 Daten bekomme.
Dann hab ich noch eine tabelle wo ich diese 6 Werte immer in einer Zeile speichere.
Ab dem zweiten Durchgang solle das Programm schauen ob es schon eine Spalte mit den identischen Werten aus der Tabelle gibt.

Das Problem ist das es sich zwar ausführen lässt dann aber Probleme beim Klick auf den Button gibt.
Ich hab es auch schon anders versucht dann lässt es sich nur einmal ausführen


----------



## JStein52 (3. Aug 2015)

Ja, das hatte ich verstanden. Wie sieht denn dein Code inzwischen aus ? Der von oben kann es ja nicht sein. Kannst du uns den relevanten Ausschnitt posten ? Und was genau heisst es gibt Probleme ?


----------



## Paul15 (3. Aug 2015)

```
for (int i = model.getRowCount();i != 0;i--)
       {
         if (bxCheese.isSelected()==zCheese.get(i)) //&&bxBurger.isSelected()==zBurger.get(i)&&bxSalsa.isSelected()==zSalsa.get(i)&&bxOnion.isSelected()==zOnion.get(i)&&bxCucumber.isSelected()==zCucumber.get(i)&&bxSauce.isSelected()==zSauce.get(i))
         {
         
           zAnzahl.set(i,(zAnzahl.get(i)+1));
           //zAnzahl.set(i,2);
           System.out.print("Test");
           //break;
         }   
       }
```

es geht um zutaten


----------



## VfL_Freak (3. Aug 2015)

das ist alles ?
Wie groß ist den der RowCount ??

Gruß Klaus


----------



## JStein52 (3. Aug 2015)

Ok.  Was geht denn genau nicht ? Oder bist du erst soweit dass noch gar nichts geht ? Der Code steckt in einem
ItemListener oder so was ?  zAnzahl ist eine JTable und model ist deren Model oder ???
Hast du es mal so probiert:


```
for (int i = model.getRowCount();i != 0;i--)
       {
         if (bxCheese.isSelected() && bxCheese.getText()==zCheese.get(i)) //&&bxBurger.isSelected()==zBurger.get(i)&&bxSalsa.isSelected()==zSalsa.get(i)&&bxOnion.isSelected()==zOnion.get(i)&&bxCucumber.isSelected()==zCucumber.get(i)&&bxSauce.isSelected()==zSauce.get(i))
         {
        
           zAnzahl.set(i,(Integer.parseInt(zAnzahl.get(i))+1));
           //zAnzahl.set(i,2);
           System.out.print("Test");
           //break;
         } 
       }
```

wobei ich jetzt nicht so recht weiss was zCheese und zAnzahl ist ....


----------



## Paul15 (3. Aug 2015)

zAnzahl soll hochgezählt werden wenn die werte gleich sind
zChesse ist eine der Arraylists in denen ich die Daten auch noch speicherer


----------



## JStein52 (3. Aug 2015)

Ok, dann wird vermutlich zAnzahl.get(i) schon int zurückliefern und du kannst dir das mit dem parseInt schenken.
Und was geht denn nun nicht ? Kommt er an deinem print vorbei ?  Funktioniert der auskommentierte set ?


----------



## Paul15 (4. Aug 2015)

Das print kommt nie da es immer eine riesige fehlermeldung kommt


----------



## Joose (4. Aug 2015)

Paul15 hat gesagt.:


> Das print kommt nie da es immer eine riesige fehlermeldung kommt



Dann poste doch bitte diese Fehlermeldung hier. Die Fehlermeldungen gibt es nicht ohne Grund: Damit lässt sich einfach und relativ rasch die Ursache finden.


----------



## Paul15 (4. Aug 2015)

Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
   at java.util.ArrayList.rangeCheck(Unknown Source)
   at java.util.ArrayList.get(Unknown Source)
   at Hauptklasse$4.actionPerformed(Hauptklasse.java:295)
   at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
   at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
   at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
   at java.awt.Component.processMouseEvent(Unknown Source)
   at javax.swing.JComponent.processMouseEvent(Unknown Source)
   at java.awt.Component.processEvent(Unknown Source)
   at java.awt.Container.processEvent(Unknown Source)
   at java.awt.Component.dispatchEventImpl(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Window.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
   at java.awt.EventQueue.access$500(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.awt.EventQueue$4.run(Unknown Source)
   at java.awt.EventQueue$4.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.awt.EventQueue.dispatchEvent(Unknown Source)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.run(Unknown Source)


----------



## VfL_Freak (4. Aug 2015)

Moin,

für Dich relevant ist davon aber nur dieses:
*Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1*
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
*at Hauptklasse$4.actionPerformed(Hauptklasse.java:295)*
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

Du siehst dass im Sourecode "Hauptklasse.java" (toller Name übrigens ... )  in Zeile 295 die genannte Exception auftrat, die dir sagt, dass Du dort den Index eines Arrays verletzt.

Poste mal den hierzu relevanten Code (aber nicht nur die eine Zeile - mit Deklaration und allem, wo auf das Array zugegriffen wird).

Gruß Klaus


----------



## Paul15 (4. Aug 2015)

Ich werd es mal so probieren.
Falls es nicht funktioniert meld ich mich noch mal


----------

