由于我是 java swing 的初学者(我使用的是 netbeans),因此在我的 gui 中集成表格时遇到问题。 我有一个选项卡,其中有一个面板,其中包含数据库中的研究选项,我想在此面板下方添加包含研究结果的生成表。 通过 swing,我在我的选项卡中放置了一个 JPanel“researchPanel”,我所做的如下:
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 的“设计”选项卡中,我已将面板设置为“自动调整垂直和水平大小”,因为结果表可能相当大。 我错过了什么?
最佳答案
Swing 组件只能有一个父组件。
由于以下原因,您无法在 resultsPanel
中看到 JTable
首先创建JScrollPane pane = new JScrollPane(table);
添加到resultsPanel
,
但是您可以在此处重写table
的父组件JOptionPane.showMessageDialog(null, new JScrollPane(table));
。
因此,删除最后一行,您的 JTable
将可见。
关于java - JTable 在 JPanel 中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20541605/