由于我是Java swing的初学者(正在使用Netbeans),因此在将表集成到gui中时遇到了麻烦。
我有一个选项卡,其中包含一个面板,其中包含数据库中的研究选项,并且我想在此面板下添加包含研究结果的生成表。
随着挥杆动作,我将一个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));
正如我在生成的代码中看到的那样,
resultsPanel
已经具有布局。以防万一,我做了一个resultsPanel.setLayout(new BorderLayout())
和resultsPanel.add(pane, BorderLayout.CENTER)
并且我在面板中看到了一些阴影,但是仍然没有数据。此外,在netbeans的“设计”选项卡中,我将面板设置为“自动调整垂直和水平大小”,因为结果表可能很大。
我想念什么?
最佳答案
Swing组件只能有一个父组件。
由于以下原因,您无法在JTable
中看到resultsPanel
首先,您创建JScrollPane pane = new JScrollPane(table);
添加到resultsPanel
但是随后您在table
此处覆盖了JOptionPane.showMessageDialog(null, new JScrollPane(table));
的父组件。
因此,删除最后一行,您的JTable
将可见。