Ширина столбцов JTable

Имеется код

JFrame jFrame=new JFrame();
    jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    jFrame.setExtendedState(MAXIMIZED_BOTH);
    jFrame.setLocationRelativeTo(null);
    DefaultTableModel dtm=new DefaultTableModel(5,4);
    JTable jTable=new JTable(dtm);
    jFrame.add(jTable);
    jFrame.setVisible(true);

Подскажите каким образом можно установить ширину столбцов например так 1-ый 10%, 2-ой 50%, 3-ий и 4-ый по 20%


Ответы (1 шт):

Автор решения: Z.John

Можно так

 jTable.getColumnModel().getColumn( 0 ).setWidth( 20 );

Только размеры ставятся в абсолютных размерах.

Для задания размеров в диапазоне используйте минимальное и максимальное значение например:

 TableColumn col = jTable.getColumnModel().getColumn( 0 );
 col.setMinWidth(20);
 col.setMaxWidth(50);

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

 jTable.addPropertyChangeListener( new PropertyChangeListener(){

        @Override
        public void propertyChange( PropertyChangeEvent evt ){
            if( evt.getPropertyName().equals( "size" ) ){
                jTable.getColumnModel().getColumn( 0 ).setWidth( (int)(jTable.getWidth() * 0.1) );
                ...
            }
        }
 } );
→ Ссылка