2017-04-21 2 views
0

Ich weiß, dass eine JTable normalerweise in eine JScrollPane eingefügt wird, aber ich möchte überhaupt nicht blättern, ich möchte die Tabelle wachsen, wenn eine Zeile hinzugefügt wird. Ich habe NetBeans IDE 8.2 verwendet, um eine Swing-Anwendung zu erstellen, die mit meinen Tabellen, die ich in JPanels, Daten und Header in separaten Panels eingegeben habe, fast das Gleiche macht.Meine JTable wird überhaupt nicht angezeigt

Ich habe versucht, zu den Grundlagen zu gehen und hand craft den Code, den ich brauche, aber es zeigt die Tabelle überhaupt nicht an.

public NewJFrame1() { 
    initComponents(); 
    JTable table = new JTable(); 
    DefaultTableModel tableModel = new DefaultTableModel(); 
    tableModel.addColumn("Type"); 
    tableModel.addColumn("Folder"); 
    String[] row = {"Datum1","Datum2"}; 
    table.setModel(tableModel); 
    tableModel.addRow(row); 
    this.getContentPane().add(table.getTableHeader()); 
    this.getContentPane().add(table); 
} 
+1

Eine Tabelle sollte in einem JScrollPane angezeigt werden, damit die Kopfzeile und die Daten ordnungsgemäß angezeigt werden. Lesen Sie die JTable-API, und Sie finden eine Verknüpfung zum Swing-Lernprogramm zu 'Verwendung von Tabellen' für die Grundlagen der Verwendung einer Tabelle. – camickr

+0

^--- Was er sagte [Wie man Tabellen verwendet] (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html) und [Wie Scroll-Fenster zu verwenden] (http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html) – MadProgrammer

+0

'initComponents' schlägt vor, dass Sie den Netbeans - Formulareditor verwenden. Sie werden wahrscheinlich feststellen, dass dies Ihre Versuche beeinträchtigt, die Benutzeroberfläche dynamisch zu ändern Sie wären besser dran, wenn Sie es nicht benutzen (der Formulareditor). – MadProgrammer

Antwort

1

Ich glaube, Sie das Modell

table.setModel(tableModel); //add this to your code 

Ok, den Tisch decken sollte so von dem, was ich sehe, Sie Netbeans verwenden und JFrame zu schaffen. Wenn Sie Ihre Tabelle aus dem Design einfügen als es keine Notwendigkeit für Sie eine andere Tabelle in den constructor.Just einfach zu erstellen:

public NewJFrame() { 
    initComponents(); 
    DefaultTableModel tableModel = new DefaultTableModel(); 
    tableModel.addColumn("Type"); 
    tableModel.addColumn("Folder"); 
    String[] row = {"Datum1","Datum2"}; 
    tableModel.addRow(row); 
    jTable1.setModel(tableModel);// where jTable1 has been created and instantiated automatically by netbeans when you draged and dropt it to your frame , from the design. 
} 
+0

Ja, tut mir leid, ich habe eine reduzierte Version erstellt, um das Problem zu demonstrieren und habe es verpasst! Es wird immer noch nicht angezeigt, wenn sie verbunden sind. – Denizen

+0

Überprüfen Sie meine Bearbeitung –

+0

Danke @Radu Soigan – Denizen

0

Radu Soigan richtig ist, sind die JTable und Tablemodel separate Objekte, die sein müssen Verknüpft mit der setModel (tableModel) -Methode, da die Tabelle nicht weiß, wo sich die anzuzeigenden Daten befinden. Dies gilt auch für benutzerdefinierte Tabellenmodelle. Denken Sie immer daran, nach dem Einrichten des Modells auf JTable zu setzen.

Verwandte Themen