Ran*_*ize 12 java swing jtable
我想在表中添加一些列(Swing JTable).其中一些将具有默认大小(例如250),其他将被隐藏(因此它们的大小将为0).我用这个代码:
model = new DefaultTableModel();
table = new JTable(model);
setAutoResizeMode(AUTO_RESIZE_OFF);
for (int i = 1; i < COLUMN_NAMES.length; i++) {
model.addColumn(COLUMN_NAMES[i]);
if (show[i]) show(index);
else hide(index);
}
........
private void hide(int index) {
TableColumn column = getColumnModel().getColumn(index);
column.setMinWidth(0);
column.setMaxWidth(0);
column.setWidth(0);
column.setPreferredWidth(0);
doLayout();
}
private void show(int index) {
final int width = 250;
column.setMinWidth(15);
column.setMaxWidth(width);
column.setWidth(width);
column.setPreferredWidth(width);
doLayout();
}
Run Code Online (Sandbox Code Playgroud)
问题是当显示表格时,显示所有列(没有隐藏),它们的大小不是250,但它们具有相同的大小.
我怎样才能得到想要的效果?
mpr*_*hat 16
当您想要隐藏要设置的列时,我认为您已经错误地命名了您的方法
column.setMinWidth(0);
column.setMaxWidth(0);
column.setPreferredWidth(0);
Run Code Online (Sandbox Code Playgroud)
但是在您的代码中,当您想要显示完全相反的列时,您正在执行此操作.
此外,无需在TableColumn上调用此"setWidth"方法,请阅读TableColumn#setWidth(int).
尝试这样的事情,例如:
myTableModel = new DefaultTableModel();
myTableModel.setColumnIdentifiers(new Object[]{"ID", "Name"});
JTable myTable = new JTable(myTableModel);
// remember to save the references
TableColumn myTableColumn0 = guiLoteryNumbersTable.getColumnModel().getColumn(0);
TableColumn myTableColumn1 = guiLoteryNumbersTable.getColumnModel().getColumn(1);
//...
// remove temporary the column ("hide")
myTable.getColumnModel().removeColumn(myTableColumn1);
// then you restore that column when you need it ("show")
myTable.getColumnModel().addColumn(myTableColumn1);
Run Code Online (Sandbox Code Playgroud)
这是我知道隐藏列的最佳方式.
| 归档时间: |
|
| 查看次数: |
44098 次 |
| 最近记录: |