@MaxLich
java developer

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

Здравствуйте. Нужно получать текущий размер компоненты (в моём случае - таблицы, причём - именно ширину), и в зависимости от этого размера особым образом выстраивать внутренние компоненты и особым образом задавать их размеры (в моём случае, это столбцы, должна меняться их ширина). Есть ли такая возможность? И если да, то как это сделать?
  • Вопрос задан
  • 252 просмотра
Решения вопроса 1
@MaxLich Автор вопроса
java developer
Пока сделал так:
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);
        }
    }


То есть получаю ширину главного окна, и в зависимости от этого вычисляю ширину столбцов. В принципе, нормально. Приложение тестовое, поэтому графика неважна. Но если будут более хорошие и простые предложения, то обязатально рассмотрю.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
делаешь слушателя событий примерно так:
public class CompListener  implements ComponentListener{
    public void componentHidden(ComponentEvent e) {
        //e.getComponent() отсюда берешь параметры и делаешь что угодно с отсальными компонентами если необходимо
    }
    public void componentMoved(ComponentEvent e) {
         //e.getComponent() отсюда берешь параметры и делаешь что угодно с отсальными компонентами если необходимо
    }
    public void componentResized(ComponentEvent e) {
         //e.getComponent() отсюда берешь параметры и делаешь что угодно с отсальными компонентами если необходимо
    }
    public void componentShown(ComponentEvent e) {
        //e.getComponent() отсюда берешь параметры и делаешь что угодно с отсальными компонентами если необходимо
    }
}
//где то в коде делаешь 
table.addComponentListener(new CompListener());
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы