修改JTable以适应屏幕

3

我创建了一个用于练习的应用程序,并在其中使用了一个 JTable 来显示来自我的数据库的数据。

我的问题是,表格只显示在屏幕上的一半面板中。我已经尝试过扩展列,但没有成功。有人能告诉我如何修改表格吗?

以下是创建表格的代码:

    public void createTable() {
    JTable table = new JTable();
    DefaultTableModel tableModel = new DefaultTableModel(new Object[][]{},new String[]{"To do","Date added"});
    table.setSize(450, 600);
    table.setModel(tableModel);
    for(int i = 0; i < model.getId().size(); i++) {
        tableModel.addRow(new Object[]{model.getItem().get(i), model.getDate().get(i)});
    }
    add(table.getTableHeader());
    add(table);
}

现在的样子如下:

enter image description here

另外,我想问一下table.getTableHeader(),因为如果我不添加它,它就不会显示出来,因为它是表格的一部分...这正常吗?


1
JTable 在我的屏幕上只显示了 JPanel 的一半”,有趣的不是您创建 JTable 的方式(这是经典的),而是您如何创建 JPanel。特别是您使用哪个布局管理器。显然,您不想适应屏幕而是要适应面板…” - PhiLho
1
所有三个点(由@Andrew Thompson提出)都非常重要,发布一个“SSCCE”,短小精悍、可运行、可编译的JFrameJPanel中的JTable。解决方法不是什么,也没有什么特别之处。 - mKorbel
@mKorbel 为了作弊,我在编辑中添加了第三个要点。 ;) - Andrew Thompson
@mKorbel,这就是我创建1.1C的初衷。 ;) - Andrew Thompson
1
“你能给我一个例子吗?”是的,我可以。我可能会考虑寻找一个或编写一个新的例子。但首先我想看看你的SSCCE。 - Andrew Thompson
显示剩余5条评论
1个回答

4
  • JPanel已在API中实现了FlowLayout,因此您的JPanel可以正确地放置JComponents,并具有您的逻辑(添加JTableHeader,添加JTable)。

  • 将其更改为BorderLayout,并将JTableHeader放置在NORTH/SOUTH,将JTable放置在CENTER

  • 使用JScrollPane查看JTables,其他所有内容都会干扰LayoutManager和计算PreferredSize的方式非常丑陋。


默认的FlowLayout很可能是罪魁祸首。 - trashgod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接