JTable在JPanel中不可见

时间:2013-12-12 10:58:30

标签: java swing netbeans jtable jpanel

由于我是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的“设计”选项卡中,我将面板设置为“垂直”和“水平”自动调整大小,因为结果表可能非常大。 我错过了什么?

1 个答案:

答案 0 :(得分:2)

Swing组件只能有一个父组件。

由于以下原因,您无法在JTable中看到resultsPanel

首先创建JScrollPane pane = new JScrollPane(table);

添加到resultsPanel

但是您在此table覆盖了JOptionPane.showMessageDialog(null, new JScrollPane(table));的父组件。

因此请删除最后一行,您的JTable将会显示。