由于我是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将可见。

07-25 21:33