# JTable Spaltenbreite anpassen



## Cheefrocker (22. Okt 2007)

hallo zusammen! 

wie kann ich eigentlich bei einem Jtable die spaltenbreite nach dem Inhalt ausrichten lassen? 

momentan ist jede spalte gleichbreit. jedoch soll z.b das Feld Beschreibung größer sein als das Feld PLZ. 



meine Zweite Frage. Ich habe in einer Spalte Boolean-Werte(Häkchen.) Wie kann ich das jetzt so machen, wenn ich ein Datensatz(also das Häkchen) gesetzt habe. das sich die anderen Hähcken nicht gesetzt werden? oder wenn diese gesetzt werden dann gelöscht werden?

danke euch!


----------



## Gast (22. Okt 2007)

siehe FAQ zu JTable

http://www.java-forum.org/de/viewtopic.php?t=5321

In Kapitel 3 steht die Lösung zur Einstellung der Spaltenbreite.

------

zur zweiten Frage
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/ButtonGroup.html

du musst deine CheckBoxen einfach alle zu einer ButtonGroup hinzufügen.


----------



## Cheefrocker (22. Okt 2007)

danke dir! Aber das sind ja keine direkten buttons. 

Ich verwende ein TableModell und setze eine spalte als boolean ein.


----------



## Guest (22. Okt 2007)

versuchs mal so:

```
ButtonGroup group1 = new ButtonGroup();
group1.add((JCheckBox)tabModel.getValueAt(0,1));
group1.add((JCheckBox)tabModel.getValueAt(1,1));
group1.add((JCheckBox)tabModel.getValueAt(2,1));
.
.
.
```

einfach in deine Schleife zur Tabellenbefüllung einfügen.


----------



## Cheefrocker (22. Okt 2007)

```
for(int i=0;i<zad.getRecordCount();i++)
        {
            String KontoInhaber = zad.getRecordByPos(i).getFieldByKey("NAME1").getVal()+" "+zad.getRecordByPos(i).getFieldByKey("NAME2").getVal()
            +" "+zad.getRecordByPos(i).getFieldByKey("NAME3").getVal()+" "+zad.getRecordByPos(i).getFieldByKey("NAME4").getVal();
            t[i][0]= null;
            t[i][1]= zad.getRecordByPos(i).getFieldByKey("IKNUMMER").getVal();
            t[i][2]= KontoInhaber;
            t[i][3]= zad.getRecordByPos(i).getFieldByKey("KTONR").getVal();
            t[i][4]= zad.getRecordByPos(i).getFieldByKey("BLZ").getVal();
//            System.out.println(zad.getRecordByPos(i).getFieldByKey("BLZ").getVal()); //KTONR
//            System.out.println(zad.getRecordByPos(i).getFieldByKey("KTONR").getVal());
//            System.out.println(zad.getRecordByPos(i).getFieldByKey("IKNUMMER").getVal());           
        }
        
        
        
        String[] s = {
                "Auswahl", "IK-Nr.", "Kto-Inhaber", "Kto-Nr.", "BLZ"};
        
       return(new DefaultTableModel(t,s){
            Class[] types = new Class [] {
                
                
              java.lang.Boolean.class,java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class
                 
            };
            boolean[] canEdit = new boolean [] {
                true, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
```

so wird meine Tabelle befüllt. wie kann ich aus dem boolean jetzt eine JCheckbox machen?


----------



## André Uhres (22. Okt 2007)

```
jTable1.getModel().addTableModelListener(new TableModelListener() {

            @Override
            public void tableChanged(TableModelEvent e) {
                int row = e.getFirstRow();
                int column = e.getColumn();
                Object value = jTable1.getValueAt(row, column);
                if (value instanceof Boolean && (Boolean) value) {
                    for (int i = 0; i < jTable1.getRowCount(); i++) {
                        if (i != row) {
                            jTable1.setValueAt(Boolean.FALSE, i, column);
                        }
                    }
                }
            }
        });
```


----------



## Cheefrocker (22. Okt 2007)

```
if (value instanceof Boolean && (Boolean) value)
```

NeuJFrame.java:183: operator && cannot be applied to boolean,java.lang.Boolean
                if ((value instanceof Boolean)&& (Boolean) value) {
1 error


----------



## Cheefrocker (22. Okt 2007)

nutze leider noch die java 1.4 version


----------



## André Uhres (22. Okt 2007)

if (value instanceof Boolean && ((Boolean)value).booleanValue()) {


----------



## Cheefrocker (22. Okt 2007)

Hey besten dank euch! Es läuft !! 

*spezial thx  @ Andre


----------

