2017-09-04 3 views
0

Zuerst habe ich erstellt JSplitPane:JTable doesnt anzeigen

JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT ,new JScrollPane(textArea), new JScrollPane(table)); 
add(splitPane);//added to frame 

dann habe ich erstellte Tabelle mit Standardmodell:

DefaultTableModel model = new DefaultTableModel(columns, 0); 
JTable table = new JTable(model); 

in der ich diese Werte als Array colum eingestellt: A B C D E F P1 P2 R1 R2 R3 S1 S2.

Das Problem ist, wenn ich später nach einer Aktion (in Aktion Hörer) versuchen, Daten mit diesem Code hinzuzufügen:

model.addRow(parts); 

wo Teile (als Array) sind:

3.0 2.0 5.0 4.0 6.0 1.0 4.0 1.0 -4.0 -30.0 5.0 -1.0 -6.0 
6.0 1.0 3.0 2.0 5.0 4.0 0.5 -5.5 0.75 -38.5 7.0 1.5 -5.5 

textarea-Shows richtig, aber Tabelle nicht.

Ich weiß nicht, was ich falsch mache, ich habe dieses Tutorial https://docs.oracle.com/javase/tutorial/uiswing/components/table.html verfolgt, aber es hilft nicht.

P.S. Wenn ich table = new JTable(10,10) gleich nach der splitPane-Initialisierung einstelle, wird dies normal im Split-Fenster angezeigt.

Antwort

1

Die Tabellenvariable ist null, wenn Sie sie dem geteilten Bereich hinzufügen. Es wurde also keine Komponente zum geteilten Fenster hinzugefügt.

Sie können später keine Instanz der JTable erstellen. Sicher kann die Variable "table" jetzt einen Verweis auf die JTable enthalten, aber Sie haben die Tabelle nicht tatsächlich dem geteilten Fenster hinzugefügt.

Sie können die Tabelle nur dann zum Splitfenster hinzufügen, nachdem Sie die JTable erstellt haben.

So muss der Code so etwas wie sein:

table = new JTable(column, 0); 
JSplitPane splitPane = new JSplitPane(... , new JScrollPane(textArea), new JScrollPane(table)); 

Dann später in Ihrem Code Sie verwenden können:

DefaultTableModel model = (DefaultTableModel)table.getModel(); 
model.addRow(...);