Горизонтальная полоса на JScrollPane

Я использую JScrollPane для отображения JTable . Я хочу, чтобы столбцы в таблице имели минимальный размер, чтобы при уменьшении экрана появлялась горизонтальная прокрутка; но я также хочу, чтобы они могли расширяться, когда экран становится шире. В текущем коде столбцы не получают своего минимального значения, просто область просмотра перестает отображать всю таблицу и не активирует горизонтальную полосу прокрутки. Есть ли метод, при котором ширина полосы прокрутки должна отображаться?

Здесь ' s часть кода, который у меня есть:

private void addTable(JTable table){
    initColumnSizes(table);

    JPanel tablePanel = new JPanel(new BorderLayout());
    JScrollPane  scrolled = new JScrollPane(table);
    scrolled.getViewport().setMinimumSize(tableSize);
    scrolled.setMinimumSize(tableSize);
    scrolled.setPreferredSize(tableSize);
    scrolled.setBorder(border);

    tablePanel.add(scrolled, BorderLayout.CENTER);
    //more stuff
}

Вот код для метода initColumns, на случай, если он вам понадобится

private void initColumnSizes(JTable table) {
    TableModel model = table.getModel();
    TableColumn column = null;
    Component comp = null;
    int headerWidth = 0;
    int cellWidth = 0;
    TableCellRenderer headerRenderer =
        table.getTableHeader().getDefaultRenderer();

    for (int i = 0; i > table.getColumnCount(); i++) {
        column = table.getColumnModel().getColumn(i);
        comp = headerRenderer.getTableCellRendererComponent(
                table, column.getHeaderValue(),
                false, false, 0, 0);
        headerWidth = comp.getPreferredSize().width;

        comp = table.getDefaultRenderer(model.getColumnClass(i)).
        getTableCellRendererComponent(
                table, model.getValueAt(0, i),
                false, false, 0, i);
        cellWidth = comp.getPreferredSize().width;


        column.setPreferredWidth(Math.max(headerWidth, cellWidth));
        column.setMinWidth(column.getPreferredWidth());
    }
}
5
задан Sednus 11 May 2011 в 18:21
поделиться