fin*_*nnw 5 java swing jtable tablecelleditor
我正在尝试JTable使用以下行为向a添加列(类似于Windows资源管理器和类似的shell):
双击不得触发单元格的编辑,但如果可能,我希望保留任何其他默认编辑触发器.
我曾尝试添加一个MouseListener表,并消耗所有MouseEventS,但这并不工作-如果我回到true从isCellEditable()那么我的听众从来没有收到任何点击事件,但如果我回到false然后F2不再起作用.
这可以仅使用事件监听器来实现吗?如果我可以避免它,我宁愿不搞乱PLAF功能.
你必须制作自己的 cellEditor 和 ovveride
public boolean isCellEditable( EventObject e )
Run Code Online (Sandbox Code Playgroud)
您可以使用 eventObject 上的 clickCount 来区分单击和双击
如果是单次单击并且位于选定的单元格上,则可以返回 true,否则返回 false;
检索行和列
int row = ( (JTable) e.getSource() ).rowAtPoint(e.getPoint());
int column = ( (JTable) e.getSource() ).columnAtPoint(e.getPoint());
Run Code Online (Sandbox Code Playgroud)
要启用 F2,您可以添加自定义 inputMap 和 actionMap 条目
similar too
table.getInputMap().put(KeyStroke.getKeyStroke("DOWN"), "doMyArrowDown");
table.getTable().getActionMap().put("doMyArrowDown", new ArrowDownAction());
Run Code Online (Sandbox Code Playgroud)
然后根据您的操作,您可以自己启动单元格编辑
table.editCellAt(row, column );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14873 次 |
| 最近记录: |