gpt4 book ai didi

java - BoxLayout 中的 Jtable

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:22 27 4
gpt4 key购买 nike

我有一个 BoxLayout(在 BorderLayout 的面板中),我在其中垂直放置了一个 JTable 和一个按钮。我希望表格具有固定的宽度,并且高度应自行调整大小以填充面板。目前,我对显示的宽度没问题,但不是它填满了整个面板的高度。例如,如果表中的数据为零,我希望只显示列名。我尝试过 setViewportView() 和 setPreferredSize() 之类的方法,但无法真正发挥作用。有什么建议么?它在布局或滚动 Pane 中吗?

String[] columnNames = { "Date", "Type"
};
Object[][] data = {
};
JTable myTable = new JTable(data, columnNames);
JButton okButton = new JButton("OK");

JPanel panWest = new JPanel();
panWest.setLayout(new BoxLayout(panWest, BoxLayout.PAGE_AXIS));
JScrollPane scrollPane = new JScrollPane(myTable);
panWest.add(scrollPane);
panWest.add(okButton);

编辑这就是最终的工作:

Dimension dimension = new Dimension();
dimension.height = (myTable.getRowCount()*myTable.getRowHeight())+
myTable.getTableHeader().getPreferredSize().height;
dimension.width = myTable.getColumnModel().getTotalColumnWidth();
scrollPane.setMaximumSize(dimension);

最佳答案

I would like the table to have a fixed width and that the height should resize itself up to filling the panel.

I have a BoxLayout (in a panel of a BorderLayout) in which I've put a JTable and a button vertically.

一共有三种(只提到了简单的)方式

  • JPanel 使用内置的 LayoutManager - FlowLayout (FLowLayout.CENTER),

    1. 在你想要改变的情况下覆盖 FLowLayout.LEFTRIGHT

    2. FlowLayout 放置的
    3. JComponent 永远不会调整大小,除非以编程方式更改 XxxSize 并由 revalidate 通知> & 重绘,

    4. 通过覆盖 JTable.setPreferredScrollableViewportSize(new Dimension(int, int)); 为 JScrollPane 设置合适的大小,

    5. JScrollPane 接受此 Dimension 作为初始大小,需要在 JFrame.setVisible(true)

      之前使用 JFrame.pack()/li>
  • BoxLayout 接受最小、最大和首选大小,为JScrollPane

    覆盖所有这三种大小
  • (一半的解决方案,但最舒服)将 JPanelLayoutManager 更改为 BorderLayout

    1. JScrollPaneJTable放到BorderLayout.EAST/WEST区域,

    2. 然后覆盖 JTable.setPreferredScrollableViewportSize(new Dimension(int, int));,

    3. JScrollPane 将占据 BorderLayout.EAST/WEST 的整个区域,并且只能在 heights 坐标上调整大小


  • 使用MigLayout,这里有一些关于MigLayoutJScrollPane的帖子(与JTextArea JTable)

关于java - BoxLayout 中的 Jtable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19704328/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com