Ich habe den folgenden Code, um eine JTable zu instanziieren: Die Tabelle enthält die richtige Anzahl von Zeilen und Spalten, aber es gibt keine Anzeichen für die Titel auf den Spalten.
public Panel1()
{
int nmbrRows;
setLayout(null);
setBackground(Color.magenta);
Vector colHdrs;
//create column headers
colHdrs = new Vector(10);
colHdrs.addElement(new String("Ticker"));
// more statements like the above to establish all col. titles
nmbrRows = 25;
DefaultTableModel tblModel = new DefaultTableModel(nmbrRows, colHdrs.size());
tblModel.setColumnIdentifiers(colHdrs);
scrTbl = new JTable(tblModel);
scrTbl.setBounds(25, 50, 950, 600);
scrTbl.setBackground(Color.gray);
scrTbl.setRowHeight(23);
add(scrTbl);
//rest of constructor
...
}
Wenn ich dies mit anderem Code zum Erstellen von Tabellen vergleiche, sehe ich keine fehlenden Schritte, aber etwas muss fehlen.
Der Hauptunterschied zwischen dieser Antwort und der akzeptierten Antwort ist die Verwendung von
setViewportView()
anstelle vonadd()
.So platzieren Sie
JTable
inJScrollPane
mit Eclipse IDE:JScrollPane
Container über die Registerkarte Design erstellen .JScrollPane
die gewünschte Größe dehnen (gilt für das absolute Layout).JTable
KomponenteJScrollPane
per Drag & Drop auf (Ansichtsfensterbereich).In Struktur> Komponenten
table
sollte ein Kind von seinscrollPane
.Der generierte Code wäre ungefähr so:
JScrollPane scrollPane = new JScrollPane(); ... JTable table = new JTable(); scrollPane.setViewportView(table);
quelle
Wie in den vorherigen Antworten erwähnt, besteht der "normale" Weg darin, es einem JScrollPane hinzuzufügen, aber manchmal möchten Sie nicht, dass es einen Bildlauf durchführt (fragen Sie mich nicht wann :)). Dann können Sie den TableHeader selbst hinzufügen. So was:
JPanel tablePanel = new JPanel(new BorderLayout()); JTable table = new JTable(); tablePanel.add(table, BorderLayout.CENTER); tablePanel.add(table.getTableHeader(), BorderLayout.NORTH);
quelle
public table2() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 485, 218); setTitle("jtable"); getContentPane().setLayout(null); String data[][] = { { "Row1/1", "Row1/2", "Row1/3" }, { "Row2/1", "Row2/2", "Row2/3" }, { "Row3/1", "Row3/2", "Row3/3" }, { "Row4/1", "Row4/2", "Row4/3" }, }; String header[] = { "Column 1", "Column 2", "Column 3" }; // Table JTable table = new JTable(data,header); // ScrollPane JScrollPane scrollPane = new JScrollPane(table); scrollPane.setBounds(36, 37, 407, 79); getContentPane().add(scrollPane); }
}}
Versuche dies!!
quelle
getContentPane().add(table);
macht hier keinen Sinn. Abgesehen davon: Diese Antwort fügt im Vergleich zu den vorhandenen Antworten nichts hinzu.