Автоматически измените размер 1 столбца, оставив другой, чтобы занять оставшееся доступное пространство. Использование JTable в JScrollPane

Автоматически измените размер 1 столбца, оставив другой, чтобы занять оставшееся доступное пространство. Использование JTable в JScrollPane.

Я искал это некоторое время, и я не могу найти пример, который делает это.

У меня есть JTable в ScrollPane с двумя столбцами и множеством строк. В первом столбце отображается только небольшое количество данных, которые обычно имеют одинаковую длину, в то время как во втором длина может сильно различаться.

Я хотел бы изменить размер первого столбца, чтобы он соответствовал данным, а затем позволить второму столбцу использовать оставшееся пространство. Я не хочу, чтобы он был равномерно распределен по панели.

Я видел примеры установки автоматического изменения размера одного столбца, но что это сделает со вторым столбцом?

Любая помощь будет оценена по достоинству!

Спасибо.

Стив


person Stese    schedule 20.08.2014    source источник
comment
Я не хочу, чтобы доступное пространство было поровну разделено между двумя столбцами. Я хочу, чтобы первый столбец изменил размер в соответствии с данными, которые он показывает, а затем разрешил второму столбцу использовать остальную часть пространства. извините, если это было не ясно! :)   -  person Stese    schedule 20.08.2014


Ответы (1)


кажется, что 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;
person Stese    schedule 20.08.2014
comment
Это довольно раздражает, когда ты задаешь вопрос и почти сразу находишь ответ! - person Stese; 20.08.2014