当前位置: 首页 > 知识库问答 >
问题:

Jtable不加载

轩辕弘雅
2023-03-14

该表放置在“JScrollPanel”中,并使用“DefaultTableModel”添加标题和行。

无论我做了什么,我都无法使表显示标题或行。
我在这里遗漏了什么?

class Controls extends JPanel{
    private JButton compileButton;
    private JPanel controls;
    private JTabbedPane tabbedPane1;

    private JButton insertButton;
    private JTable insertedFilesTable;
    private JScrollPane insertedFilesViewport;
    private JPanel minify;
    private JFileChooser insertChooser;

    public Controls () {
        insertChooser = new JFileChooser();

        compileButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                initCompile();
            }
        });

        insertButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                buttonActionPerformed(e);
            }
        });
    }

    public void main () {
        JFrame frame = new JFrame("Controls");

        frame.setLayout(new SpringLayout());
        frame.setContentPane(new Controls().controls);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        DefaultTableModel model = new DefaultTableModel();

        model.addColumn("Files");
        model.addColumn("Status");

        insertedFilesTable = new JTable(model);

        insertedFilesViewport = new JScrollPane(insertedFilesTable);
        insertedFilesViewport.setViewportView(insertedFilesTable);
        insertedFilesTable.setFillsViewportHeight(true);

        String[] data = {"test","test"};
        model.addRow(data);

        frame.add(insertedFilesViewport);

        frame.setSize(500,500);
        frame.setVisible(true);
    }

    private void buttonActionPerformed(ActionEvent evt) {
        insertChooser.showSaveDialog(this);
    }
}

共有1个答案

拓拔曦
2023-03-14
frame.setLayout(new SpringLayout());

....

frame.add(insertedFilesViewport);

不要将框架的布局更改为SpringLayout。没有理由这么做。

之所以看不到包含该表的滚动窗格,是因为没有对add(...)使用任何约束方法。阅读Swing教程中关于如何使用SpringLayout的部分,了解添加组件的约束有多复杂。

如果将布局保留为默认的BorderLayout,则组件将默认添加到BorderLayout中心。上面的教程还有一节关于如何使用BorderLayout您应该阅读。

 类似资料:
  • 这是我的类的全部代码。我正在尝试有一个带有JScrollPane的JTable,我也尝试了在JTable和JScrollPane上设置setVisible。我认为问题可能是我将JScrollPane添加到JPanel而不是JFrame中,但我希望在我的面板上添加该得分表。在我的JPanel(背景)中,我为背景绘制一个图像,仅此而已。 安妮的想法?

  • 问题内容: 我们有一个简单的项目,我们从套接字读取数据,并希望用即将到来的数据填充表,但是我们找不到找到将行添加到尚未创建的对象的方法,只能在以下位置找到添加行的方法:表的创建时间。 是否可以向中动态添加行,或者有更好的替代对象来处理这种显示数据的方式? 编辑 :非常感谢您的回答。 他们三个看起来都很有前途,但是我只选择一个,我认为最好的就是纪尧姆的。 问题答案: 您应该创建一个自定义。A 实际上

  • 我找到了更新数据的示例,但它使用了DefaultTableModel。当我创建自己的TableModel和自己的data类时,当我将数据添加到JTable中时,它不会更新。 有我的桌子模型: 当我添加了任何信息,但它没有更新。在JTable中,我必须把这个方法放在哪里来进行正确的数据更新?

  • 我正在Java创建一个 代码:

  • 我创建了一个表单,其中添加了一个,它有3列。第二列和第三列有编辑器。 我希望当我们选择第二列组合框的第一项时,第三列组合框的第一个组合框也应该被选择,反之亦然。 我该怎么做?