M
M
MaxLich2017-12-07 15:27:52
Java
MaxLich, 2017-12-07 15:27:52

How to get the current size of a component in Swing?

Hello. You need to get the current size of the component (in my case, the table, and, moreover, the width), and depending on this size, build the internal components in a special way and set their sizes in a special way (in my case, these are columns, their width should change). Is there such a possibility? And if so, how to do it?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
M
MaxLich, 2017-12-07
@MaxLich

So far I've done this:

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);
        }
    }

That is, I get the width of the main window, and depending on this I calculate the width of the columns. Basically, it's fine. The application is a test, so the graphics are not important. But if there are better and simpler proposals, then I will definitely consider them.

D
Dmitry Alexandrov, 2017-12-08
@jamakasi666

make an event listener like this:

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());

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question