2015-04-16 3 views
0

Это мой кодJTable setPreferredWidth вызывает дополнительный столбец

JTable table = new JTable(attributeValues, attributeNamesString); 

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 

for(int z=0;z<table.getColumnCount();z++){ 
    table.getColumnModel().getColumn(z).setMinWidth(100); 
    table.getColumnModel().getColumn(z).setMaxWidth(100); 
    table.getColumnModel().getColumn(z).setPreferredWidth(100); 
} 

К сожалению, когда я запускаю это, я получаю дополнительный столбец на экране, который простирается до размеров окна. Я не уверен, откуда это взялось или как это исправить.

enter image description here

+0

Это не произойдет, если вы не укажете 'table.getColumnModel(). GetColumn (z) .setPreferredWidth (100);'? – EvenLisle

+1

Ну, это похоже на комбинацию setPreferredWidth() и table.setAutoResizeMode (JTable.AUTO_RESIZE_OFF). Если я не отключу AutoResize, у меня все еще есть JTable, который растягивается горизонтально к кадру, но с пустым пространством после четырех столбцов. То, что я надеялся достичь, - это JTable, который имеет общую ширину 100 * numColumns. –

+0

Вы пытались не устанавливать максимальную ширину столбца «Удалить»? – EvenLisle

ответ

1

Вы уверены, что это вызвано table.getColumnModel().getColumn(z).setPreferredWidth(100); вызова? Я подозреваю (хотя я и не пробовал это сам), что это, скорее всего, вызвано table.getColumnModel().getColumn(z).setMaxWidth(100);, так как это устанавливает максимальную ширину столбцов (с добавлением до 4 x 100 пикселей в вашем случае), в то время как сама таблица растягивается до более чем 4 х 100 пикселей.

Если вы не хотите, чтобы таблица была более шириной, чем 4 x 100 пикселей, не можете ли вы также установить максимальный размер таблицы (http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#setMaximumSize(java.awt.Dimension))?

+0

это похоже на комбинацию setPreferredWidth() и table.setAutoResizeMode (JTable.AUTO_RESIZE_OFF). Если я не отключу AutoResize, у меня все еще есть JTable, который растягивается горизонтально к кадру, но с пустым пространством после четырех столбцов. Если я удалю maxWidth, я просто вернусь к тому, что JTable растянется на экран с одинаковыми столбцами ширины. –

+0

Большое вам спасибо. Если я устанавливаю максимальный размер самой таблицы, она работает. Раньше я использовал setPreferredSize. –

Смежные вопросы