Jtable in BoxLayout



我有一个BoxLayout(在BorderLayout的面板中),我在其中垂直放置了一个JTable和一个按钮。我希望表格具有固定宽度,并且高度应调整自身大小以填充面板。目前,我对显示的宽度很好,但并不是说它填满了整个面板高度。例如,如果表中的数据为零,我只想显示列名。我已经尝试过像setViewportView()和setPreferredSize()这样的东西,但不能真正让它工作。有什么建议吗?是在布局中还是在滚动窗格中?

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);

我希望桌子有一个固定的宽度和高度 应该调整自身大小以填充面板。

我有一个BoxLayout(在BorderLayout的面板中),我在其中放了一个 JTable 和垂直按钮。

有三种(仅提及简单)方法

  • 使用 built_in LayoutManager 表示 JPanel - FlowLayoutFLowLayout.CENTER ),

    1. 在您想要的情况下覆盖FLowLayout.LEFTRIGHT

    2. JComponentFlowLayout铺设的永远不会在没有以编程方式更改XxxSize并由revalidate&repaint通知的情况下调整大小,

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

    4. JScrollPane 接受此维度作为初始大小,必需的是使用 JFrame.pack( ),然后再JFrame.setVisible(true)

  • BoxLayout接受min, max and preferred size,覆盖所有这三种尺寸以获得JScrollPane

  • half solution, but most comfortable ) 将JPanel LayoutManager更改为BorderLayout

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

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

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


  • 使用MigLayout,这里有一些关于MigLayoutJScrollPane的帖子(带JTextAreaJTable

相关内容

  • 没有找到相关文章

最新更新