我有一个自定义 JTable(15 行 x 20 列),它被创建为适用于所有 JComponents。我目前将它用于 JComboBoxes、JTextFields 和 JButtons 的混合。哦,我正在使用 Java5(一个要求)。
我有两个问题:
1)首先是关于 TableCellRenderer 类,以及它的单一方法:
public Component getTableCellRendererComponent(final JTable table,
final Object value,
final boolean isSelected,
final boolean hasFocus,
final int row,
final int column) {...}
它所做的只是将Object value
参数转换为 JComponent,并可能更改背景颜色。没什么大不了。我的问题是为什么这种方法经常被称为。选择单个单元格时,会调用 23 次。在两个 UNRELATED 应用程序(我使用 Win7)之间使用 Alt-Tabbing 时,此方法被调用了 200 多次(并且仅适用于 JButtons 和 JTextFields)!这是否有必要,如果没有,我怎样才能停止不必要的渲染调用?
2)第二个问题是关于 JTable 本身。当我正在编辑一个单元格(JTextField 中的光标并闪烁)并单击另一个单元格时,仅选择了该单元格。但是,如果我随后单击另一个单元格,我将开始编辑该单元格。我能想到的是,从最初的编辑组件中,我选择了 JTable,然后选择了其中的组件。有什么办法可以改变这个吗?要么走一条路(总是在第一次点击时选择 jtable),要么走另一条路(总是在第一次点击时进入单元格)。如果可能的话,我更喜欢第一个选项。
感谢任何可以提供一些见解/帮助的人!