- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在处理一个包含适合内容的行的表格。我将 TableModelListener 安装到表模型中,以便每当添加新行时,新添加行的高度都会自动更改。这是我的测试代码:
final DefaultTableModel model = new DefaultTableModel(0, 1);
final JTable table = new JTable(model);
model.addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
// TO DO: replace 100 with the actual preferred height.
table.setRowHeight(e.getFirstRow(), 100);
}
});
JButton button = new JButton("Add Row");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
model.addRow(new String[] {"abc"});
}
});
我希望当单击“添加行”按钮时,新行会添加到表格中并且高度为 100 像素,但它不起作用 - 行高永远不会改变。更奇怪的是,如果我像这样将调用移动到按钮的 Action 监听器,JTable.setRowHeight
方法可以正常工作:
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
model.addRow(new String[] {"abc"});
talbe.setRowHeight(table.getRowCount() - 1, 100);
}
});
我绝对不能依赖这个“解决方案”,因为表格模型可以从其他地方更改。我是否正确使用了 TableModelListener
还是这是一个错误?
最佳答案
如何使用 EventQueue.invokeLater(...)
model.addTableModelListener(new TableModelListener() {
@Override public void tableChanged(final TableModelEvent e) {
// TO DO: replace 100 with the actual preferred height.
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
table.setRowHeight(e.getFirstRow(), 100);
}
});
}
});
关于java - 使用 JTable.setRowHeight 更改行高不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11407506/
我正在开发一个非常简单的 Java 应用程序,以便了解有关 JTable、TableModel 和自定义单元格渲染器的更多信息。该表是一个简单的表,有 8 列,其中仅包含文本。当您单击“添加”按钮时,
我正在处理一个包含适合内容的行的表格。我将 TableModelListener 安装到表模型中,以便每当添加新行时,新添加行的高度都会自动更改。这是我的测试代码: final DefaultTabl
更新 Tested using PHPSpreadsheet I have this code below that I have tried. It seems to work on MSOffic
大家好,希望你们今天一切顺利。我今天关于如何使用的问题 int selectedRow = jTable.getSelectedRow(); jTable.setRowHeight(selectedR
我有一个 NSBrowser 并尝试使用 setRowHeight,但收到错误: “setRowHeight:具有矩阵委托(delegate)的浏览器不支持。” 我真的不明白这意味着什么,如果有人可以
已尝试以下方法,但没有帮助,接下来我应该尝试什么?我错过了什么? $objPHPExcel->getActiveSheet()->setCellValue('A10', 'Value1, Value2
我有一个 Google 表单/工作表,它收集数据创建的单元格非常大,以至于上下导航行变得棘手。 以下函数应将所有行(标题行 1 除外)的大小调整为 50。但是,当它运行时,所有行都会自动调整数据,再次
我在正确调整表格 View 中的行大小时遇到了一个小问题。我有一个垂直标题,没有水平标题。我尝试过: self.Popup.table.setModel(notesTableModel(datai
我无法理解为什么会发生这种情况。我一直在网上搜索类似的问题,但找不到。 for ( int row = 0; row rowHeight ) rowHeight = pRen
如题,这两种方法有什么区别? 我发现如果我用tableView: heightForRowAtIndexPath:设置它的高度,然后我想得到高度的值,我会得到一个正确的值: CGFloat heigh
我是一名优秀的程序员,十分优秀!