我有一个带有一些可编辑列的JTable.
如果选择了一个单元格并且我开始输入,则单元格进入编辑模式.
我不想那样.
我只想在按F2或双击它时编辑单元格.
我发现了一些关于键绑定的帖子,但它没有帮助.
我是Java的新手.请耐心,明确.
我注意到的另一件事.如果我通过键入单元格开始编辑,它的行为与我开始通过F2或双击编辑单元格时的行为不同.
这是为什么?
解决方法:
您需要创建自己的TableCellEditor并覆盖方法isCellEditable:
public class MyCellEditor extends AbstractCellEditor implements TableCellEditor {
private static final long serialVersionUID = 1L;
JTextField textField = new JTextField("");
@Override
public boolean isCellEditable(EventObject e) {
if (super.isCellEditable(e)) {
if (e instanceof MouseEvent) {
MouseEvent me = (MouseEvent) e;
return me.getClickCount() >= 2;
}
if (e instanceof KeyEvent) {
KeyEvent ke = (KeyEvent) e;
return ke.getKeyCode() == KeyEvent.VK_F2;
}
}
return false;
}
@Override
public Object getCellEditorValue() {
return this.textField.getText();
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
this.textField.setFont(table.getFont());
this.textField.setText(value.toString());
return this.textField;
}
return false;
}
在isCellEditable中,我首先调用super.isCellEditable来检查为什么单元格可以编辑的所有其他原因.只有它本身是可编辑的,我们才会检查我们的条件.
标签:java,jtable 来源: https://codeday.me/bug/20190830/1765482.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。