Как получить текущие размеры компоненты в Swing?

 
 
 
Сообщения:52
Здравствуйте. Появилась необходимость получать текущие размеры компоненты (в моём случае - таблицы, причём - именно ширину), и в зависимости от этого размера особым образом выстраивать внутренние компоненты и особым образом задавать их размеры (в моём случае, это столбцы, должна меняться их ширина). Есть ли такая возможность в Swing? И если да, то как это делается?

ЗЫ Метод getWidth() выдаёт всегда ноль. Причём, по идеи же должно учитываться разворачивание окна и его сворачивание (а также изменение его размеров, если размеры компоненты при этом тоже меняются).
 
 
Сообщения:52
Пока сделал так:
    private void customizeColumnModel(TableColumnModel columnModel) {
        int width = (table.getWidth() == 0)? ViewGUI.WINDOW_WIDTH :  table.getWidth();
        final int defaultColumnWidth = 100;
        int columnWidth = defaultColumnWidth;
        int columnCount = columnModel.getColumnCount();
        int widthAllColumns = columnCount * defaultColumnWidth;
        if (widthAllColumns < width) {
            columnWidth = width / columnCount;
        }
 
        for (int i = 0; i < columnCount; i++) {
            setColumnWidth(columnModel.getColumn(i), columnWidth, columnWidth, columnWidth);
        }
    }


То есть получаю ширину главного окна, и в зависимости от этого вычисляю ширину столбцов. В принципе, нормально. Приложение тестовое, поэтому графика неважна. Но если будут более хорошие и простые предложения, то обязательно рассмотрю.
 
 
Сообщения:517
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
 
 
Сообщения:52
windruf:
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
как раз из-за этого у меня и появились проблемы с шириной столбцов (они не доходили до конца компоненты).
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет