# Aus Tabelle auslesen



## fleckdalm (9. Mrz 2011)

Ich würde gerne den inhalt eines JTable in ein zweidimesnsionales Array speichern.
Wie geht das?
mfg Fleckdalm


----------



## diggaa1984 (9. Mrz 2011)

mit 
	
	
	
	





```
getValueAt(row, column)
```
 des TableModels kannst du die einzelnen Zelleninhalte abfragen


----------



## fleckdalm (9. Mrz 2011)

Danke, für die Antwort, aber das liefert ein Objekt zurück wie mache ich jetzt daraus ein int?
mfg Fleckdalm


----------



## Dit_ (9. Mrz 2011)

```
Object obj = _table.getValueAt(row, column);
int int_value = Integer.parseInt(obj.toString());
```

Oder du implementierst MyTableModel.

gruß


----------



## fleckdalm (9. Mrz 2011)

Danke, aber dann bringt er mir immer eine nullpointer exception.
Was kann man da tun?
mfg Fleckdalm


----------



## Dit_ (9. Mrz 2011)

du könntest zum Beispiel deinen Code zeigen


----------



## fleckdalm (9. Mrz 2011)

Stimmt tschuldigung:

```
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * GUI.java
 *
 * Created on 09.03.2011, 17:52:12
 */

/**
 *
 */
public class GUI extends javax.swing.JFrame {
public int[][] at=new int[9][9];
    /** Creates new form GUI */
    public GUI() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        table = new javax.swing.JTable(9,9);
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        table.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {"", null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, "", null, null, null},
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "", "", "", "", "", "", "", "", ""
            }
        ));
        table.setColumnSelectionAllowed(true);
        jScrollPane1.setViewportView(table);
        table.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

        jButton1.setText("Start");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 252, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, 242, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
/*for(int i=0;i<9;i++){
    for(int y=0;y<9;y++){
                at[i][y]=Integer.parseInt(table.getValueAt(i, y).toString());
    }
}*/Object obj= table.getValueAt(1,1);
int ii=Integer.parseInt(obj.toString());
        System.out.println(ii);
     //   at[0][0]=Integer.parseInt(table.getValueAt(1, 1).toString());


}
    // TODO add your handling code here:
    }                                        

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GUI().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable table;
    // End of variables declaration

}
```


----------



## Dit_ (9. Mrz 2011)

O K.

du machst folgendes:

Du rufst Kontruktor mit 2 Parameter auf:
Parameter 1: Object[][]: sind deine Daten (ich glaube Object[zeile][spalte] oder umgekehrt...Object[spalte][zeile]...  egal)
Parameter 2: String: Namen der Spalten.

Problem ist das du als Daten ein Array mit nulls übergibst, warum? Und Spalten namen sind bei dir auch leer.

Du bekommst kein Wert aus der Tabelle da du keine Werte drin hast.


----------



## Dit_ (9. Mrz 2011)

ok ich sehe code ist generiert, und zwar vom schlechtesten GuiErbauer-Tool überhaupt.

Es ist so,

es gibt zwei Sachen:

TableModel, enthaelt die Daten, Spaltennamen und Inhalt der Zellen.
JTable, die eigentliche Tabelle. JTable schaut was im Model so alles rumliegt und zeigts an.

Also versuche lieber selbst, ohne CodeGenerator selbst code zu schreiben.

```
String[] spaltenNamen 	= {"Spalte_A", "Spalte_B", "Spalte_C"};
    	int anzahlDerZeilen 	= 9;
    	
    	JTable table 			= new JTable(new DefaultTableModel(spaltenNamen, anzahlDerZeilen));
    	
    	for(int zeile = 0; zeile < 9; zeile++){
    		for(int spalte = 0; spalte < 3; spalte++){
    			
    			/*
    			 * TABELLE MIT ZAHL 132 fuellen
    			 */
    			table.getModel().setValueAt(132, zeile, spalte);
    		}
    	}
```


----------



## fleckdalm (9. Mrz 2011)

Danke, so gehts aber das habe ich mit netbeans gemacht das kann doch nicht so schlecht sein oder?
mfg Fleckdalm


----------



## Dit_ (9. Mrz 2011)

wenn du ein Array erzeugst zB so:

Object[][] tabelle = new Object[9][3]; //9 Zeilen, 3 Spalten
dann sind alle Zellen automatisch "null", Warum macht dann netbeans noch extra eine "null, null ,null"- Liste rein? komisch.

kenne mich aber mit netbeans gar nicht aus. 

gruß


----------

