JTable не будет показывать заголовки столбцов
У меня есть следующий код для создания экземпляра JTable: таблица приходит с правильным количеством строк и столбцов, но нет никаких признаков заголовков поверх столбцов.
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
...
}
сравнивая это с другим табличным кодом, я не вижу никаких недостающих шагов, но что-то должно отсутствовать.
4 ответа:
основное различие между этим ответом и принятым ответом заключается в использовании
setViewportView()
вместоadd()
.как поставить
JTable
наJScrollPane
использование Eclipse IDE:
- создать
JScrollPane
контейнер через вкладку Дизайн.- стрейч
JScrollPane
до нужного размера (применяется к абсолютной компоновке).- перетащить
JTable
компонент поверхJScrollPane
(видовой экран область.)Структура > Компоненты
table
должен быть ребенкомscrollPane
.сгенерированный код будет выглядеть примерно так:
JScrollPane scrollPane = new JScrollPane(); ... JTable table = new JTable(); scrollPane.setViewportView(table);
Как сказано в предыдущих ответах, "нормальный" способ-добавить его в JScrollPane, но иногда вы не хотите, чтобы он прокручивался (не спрашивайте меня, когда:)). Затем вы можете добавить заголовок таблицы самостоятельно. Вот так:
JPanel tablePanel = new JPanel(new BorderLayout()); JTable table = new JTable(); tablePanel.add(table, BorderLayout.CENTER); tablePanel.add(table.getTableHeader(), BorderLayout.NORTH);
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); }
}
попробуйте это!!