由于我是java swing的初学者(我正在使用netbeans),因此无法在我的gui中集成表格。 我有一个带有面板的选项卡,其中包含数据库中的研究选项,我想在此面板下添加生成的表格以及研究结果。 随着swing,我在我的标签中放了一个JPanel'sesearchPanel',我的工作如下:
table = my_research_function(options);
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
JScrollPane pane = new JScrollPane(table);
pane.setViewportView(table);
//resultsPanel.setLayout(new BorderLayout());
resultsPanel.add(pane);
// I'm just using this to ensure i get a table
// with correct results - works fine
JOptionPane.showMessageDialog(null, new JScrollPane(table));
正如我在swing中生成的代码中看到的那样,resultsPanel
已经有了布局。为了以防万一,我做了resultsPanel.setLayout(new BorderLayout())
和resultsPanel.add(pane, BorderLayout.CENTER)
,我在面板中看到了一些阴影,但仍然没有数据。
此外,在netbeans的“设计”选项卡中,我将面板设置为“垂直”和“水平”自动调整大小,因为结果表可能非常大。 我错过了什么?
答案 0 :(得分:2)
Swing组件只能有一个父组件。
由于以下原因,您无法在JTable
中看到resultsPanel
首先创建JScrollPane pane = new JScrollPane(table);
添加到resultsPanel
,
但是您在此table
覆盖了JOptionPane.showMessageDialog(null, new JScrollPane(table));
的父组件。
因此请删除最后一行,您的JTable
将会显示。