自动调整1列,留下另一列以占用剩余的可用空间。在JScrollPane中使用JTable

时间:2014-08-20 11:54:49

标签: java swing jtable jscrollpane jtableheader

自动调整1列,留下另一列以占用剩余的可用空间。在JScrollPane中使用JTable。

我一直在寻找这个问题,我似乎找不到这样做的例子。

我在ScrollPane中有一个JTable,有两列,多行。第一列仅显示少量数据,通常长度相同,而在第二列中,长度可能会有很大差异。

我想调整第一列的大小以适应数据,然后允许第二列用尽剩下的空间。我不希望它在整个小组中平均分配。

我见过将一列设置为自动调整大小的示例,但第二列会怎么做?

任何帮助将不胜感激!

感谢。

史蒂夫

1 个答案:

答案 0 :(得分:2)

似乎是setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);与TableColumnAdjuster一起,做我需要它做的事。

代码是这样的

private JScrollPane textPanel() {
    String header[] = {"Date/Time","Log Entry"};

    String data[][] = 
    {       
            {"18-08-2014 - 16:21","Something"},
            {"18-08-2014 - 16:21","Something"},
            {"18-08-2014 - 16:21","Something"}  
    };

    JTable tPanel = new JTable(data,header);

    tPanel.setFont(new Font(Font.SANS_SERIF,Font.BOLD, 14));

    tPanel.setGridColor(Color.BLACK);
    tPanel.setForeground(Color.WHITE);
    tPanel.setBackground(Color.BLACK);
    tPanel.getTableHeader().setResizingAllowed(false);
    tPanel.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);

    TableColumnAdjuster tca = new TableColumnAdjuster(tPanel);
    tca.adjustColumns();

    JScrollPane sPanel;

    sPanel = new JScrollPane(tPanel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

    sPanel.getViewport().setBackground(Color.BLACK);

    return sPanel;