一尘不染

具有复杂编辑器的JTable

java

我有许多JTable的自定义编辑器,可以说是缺乏可用性,尤其是在使用键盘进行编辑方面的可用性。

这样做的主要原因是,我的编辑器总是以类似(尽管通常更复杂)的情况创建:

@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
  JPanel container = new JPanel();
  container.setLayout(new BorderLayout());
  container.add(field, BorderLayout.CENTER);
  field.setText((String) value);
  container.add(new JButton("..."), BorderLayout.EAST);
  return container;
}

IE面板内部有多个组件。实际的文本编辑器是作为编辑器返回的组件的后代。因此,除了呈现问题之外,据我所知,JTable集中了getTableCellEditorComponent方法返回的组件,因此当您按下突出显示单元格的按键时,它将焦点和按键传递给面板,认为是编辑器。
无论如何,我可以告知JTable“真正的”编辑器是JTextfield吗?requestFocusInWindow在正确的组件上添加hacky
是不够的,因为按键不会继续传递。


阅读 208

收藏
2020-12-03

共1个答案

一尘不染

在此处此处查看一些相关文章。

另一个关于JTable编辑的好文章

2020-12-03