JTable使用Enter键代替Tab键移动单元格焦点
Swing的JTable默认Tab键为横向移动单元格焦点,Enter键为纵向移动单元格焦点。在实际使用时不符合我们的操作习惯,而网上很多文章只是点到为止,没有详细说明。
经过自己的不断试验,以下代码实现了在表格中,用Enter键代替Tab键的功能,且焦点会自动跳过不能编辑的单元格。
/** 内部类,移动单元格焦点,当下一个单元格不能编辑时则跳过,直到移动到可编辑的焦点。* 如果焦点为最后一行最后一列,则新焦点移动到第一行第一列。*/class TableAction extends AbstractAction {public void actionPerformed(ActionEvent e) {selCol = InsertTable.this.getSelectedColumn();selRow = InsertTable.this.getSelectedRow();rowCount = InsertTable.this.getRowCount();columnCount = InsertTable.this.getColumnCount();/** 如果移动后的新单元格不能编辑则继续循环,直到新单元格可编辑则跳出循环。* selCol和selRow的值为新行列值*/do {if (selCol == columnCount - 1) {if (selRow == rowCount - 1) {selRow = 0;selCol = 0;} else {selRow += 1;selCol = 0;}} else {selCol += 1;}} while (!InsertTable.this.isCellEditable(selRow, selCol));/** 如果因为各种原因(主要是原单元格编辑器的stopCellEditing方法返回false)导致* 新焦点单元格不能启动编辑,则焦点任停留在原单元格。* 否则将移动到新单元格。*/if (InsertTable.this.editCellAt(selRow, selCol)) {InsertTable.this.changeSelection(selRow, selCol, false, false);}}}
在继承JTable的类构造方法中添加如下代码,这样在创建实例时可保证Enter键代替Tab键的功能。
public class InsertTable extends JTable {public InsertTable() {
super.getInputMap(WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke("ENTER"), "moveFocus");super.getActionMap().put("moveFocus", new TableAction());
}
注意:如果表格中的单元格都不能编辑,将按键映射放在构造方法中会造成死循环。
建议最好是将按键映射设为独立方法,在表格构造时根据实际情况确定是否启用
JTable使用Enter键代替Tab键移动单元格焦点相关推荐
- 使用Enter键代替Tab键的功能
使用Enter键代替Tab键的功能 <%@ Page language="c#" Inherits="示例代码._19.WebForm1" CodeFil ...
- 空格键 还是 Tab键?
本文转载至:http://www.solidot.org/story?sid=49551 缩进时使用空格键还是Tab键,这不是一个小问题.在HBO的喜剧片<硅谷>第三季中,不同的缩进风格导 ...
- 【ipad+向日葵远程控制】解决ipad上在向日葵中无法使用上下左右键、Tab键(解决方法是:在ipad上安装旧版本向日葵11.2.2,配合使用的是罗技K380键盘)
目录 参考链接 需要用到的3个工具(都是在Windows电脑上操作的) 开始配置 1. iTunes登录自己的账号 2. 安装旧版本 2.1 iTunes中打开向日葵APP的页面,然后把 iTunes ...
- linux终端删除键失灵,ubuntu服务器新建用户后,上下键删除键tab键失效,提示符只有$解决办法...
最近用ubunut新建普通用户后,出现上下键删除键tab键失效,提示符只有$的问题. 我的创建方法是: useradd ss passwd ss 当我用ss账号登录时出现上述问题. 解决办法1:用ad ...
- C#实现用Enter键和Tab键同样功能
在Form_Load中输入如下代码: foreach(Control ctrl in this.Controls) { if ((ctrl is TextBox) || (ctrl is ...
- 让Enter键实现Tab键的功能
开发环境:VS.NET 2005, .net framework 2.0; 开发语言: C# 2.0 窗体设计器生成的代码(Form1.Designer.cs) namespace MyTest { ...
- 按Enter键起到Tab键的效果
private void userstxt_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == ...
- Altium Designer中空格键、TAB键,X,Y失效
原文档链接:Altium Designer快捷键失效恢复方法 症状: 在AD中,正常的情况是在拖动元件时,如果按下空格键,可以旋转元件:如果按下TAB键,可以打开配置窗口,等等.本例描述一种错误, ...
- 用Enter键取代tab键
1. this.TextBox1.Attributes.Add("OnKeyPress","<script>if keycode==13 keycode=9; ...
最新文章
- 判断h5是不是在小程序中
- [转]Android敏捷开发指南
- convertViewsetTag方法的一点理解
- 使用Consul做服务发现的若干姿势
- EF 更新大量的数据时出现重复键错误
- mysql 排序1.1.1_mysql中字符串1.1/1.2/1.2.2/1.2.5排序问题
- spring-boot(2)--环境搭建
- 利用有限自动机进行字符串匹配
- idea 设置代码的颜色
- H5 下载文件到本地
- VB功能模块:最全的VB操作网页功能模块
- 安装ansys时出现问题 MS.NET Framework would you like to retry?的解决办法:
- Java 提供给第三方使用接口方法
- 浅析微信小程序生命周期之应用生命周期
- IDEA类左侧有一个对勾,如何去掉对勾?
- alternate端口什么意思_alternate是什么意思_alternate在线翻译_英语_读音_用法_例句_海词词典...
- 卧槽!百度网盘 VIP 可以免费白嫖了!亲测有效!!!
- git 名词解释和常用术语(二)
- java 打码_Java基础(一)
- distribute-list
热门文章
- GOPS北京站盛况空前,优维科技如约而至(内附老王精彩演讲PPT)
- C语言:什么是头文件
- JavaScript中获取文本框数据的方法
- python三人同行七十稀_三人同行七十稀,五树梅花廿一枝,七子团圆正半月,除百零五便得知.这句诗的诗意....
- vue前端项目老缺少XXX文件,或者XXX文件丢失错误,最好的解决办法
- 跨部门沟通难题--高手项目经理和PMO如何解决?【可乐洞察】
- CNN网络介绍与实践:王者荣耀英雄图片识别
- 机器学习-02 模型的评估与选择
- latex缩进与对齐_LaTex学术写作——设置段落 行间距 段间距 文本对齐方式
- SAP HANA XS ODATA简介