当前位置: 代码迷 >> J2SE >> 如何禁用jtable所有键盘事件
  详细解决方案

如何禁用jtable所有键盘事件

热度:111   发布时间:2016-04-24 01:58:53.0
怎么禁用jtable所有键盘事件
jtable按键盘上的下键就会从该行到下一行,回车也会换行,还有其它更多的键。
问题:有没有什么方法把所有的键事件全部屏蔽调,当我要的时候又启动。
给个代码例子,谢谢...
在线。。答对马上就结贴...

------解决方案--------------------
探讨

引用:
把事件消费掉。

Java code

keyevent.consume();

具体怎么写,能给出个稍微详细点的代码么?
谢谢..耽误3分钟的时间。谢谢

------解决方案--------------------
Java code
addKeyListener(new KeyListener(){    public void keyPressed(KeyEvent e){        if(e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_DOWN){            e.consume();        }    }    .... // 其他方法});
------解决方案--------------------
这是测试类,
其实JTabel的那些键盘操作是通过
LazyActionMap 实现的,
不是通过KeyListener,
刚开始的回答有点想当然,不好意思了~

Java code
import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.plaf.basic.BasicTableUI;@SuppressWarnings("serial")public class TableTest extends JFrame {        public TableTest() {        setDefaultCloseOperation(EXIT_ON_CLOSE);        setSize(400, 300);        setLocationRelativeTo(null);        Object[][] data = new Object[][]{                {"121", "122", "123"},                 {"321", "322", "323"},                {"441", "442", "443"}};        Object[] title = new Object[]{"1","2","3"};        JTable table = new JTable(data, title) {            @Override            public void updateUI() {                super.updateUI();                setUI(new MyTableUI());            }        };        setContentPane(new JScrollPane(table));        setVisible(true);    }        class MyTableUI extends BasicTableUI {        @Override        protected void installKeyboardActions() {                    }    }    public static void main(String... args) {        new TableTest();    }}
  相关解决方案