栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JTable键绑定

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JTable键绑定

像@Guillaume一样,我运行您的代码没问题。您可能会在这里讨论过

CellEditor
无意中失败的情况。一个SSCCE可能有助于澄清问题。
editingStopped()

附录:您可以在

saveAction()
处理程序中取消编辑,如下所示。

table.editingCanceled(null);

供参考,我在几个方面更新了您的示例:

  • Control-S
    不受任何
    JTable
    Action
    常见的外观实现的约束,因此无需删除它。
  • 为了方便跨平台使用,请使用
    getMenuShortcutKeyMask()
  • 只能 在事件分配线程上构造和操作Swing GUI对象。

码:

import java.awt.Dimension;import java.awt.EventQueue;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.KeyEvent;import javax.swing.AbstractAction;import javax.swing.ActionMap;import javax.swing.InputMap;import javax.swing.JComponent;import javax.swing.Jframe;import javax.swing.JOptionPane;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.KeyStroke;public class TestTableKeyBinding extends Jframe {    private static final int MASK =        Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();    private JTable table;    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() { @Override public void run() {     TestTableKeyBinding test = new TestTableKeyBinding();     test.setVisible(true); }        });    }    TestTableKeyBinding() {        super();        initUI();        addKeyBindings();    }    private void initUI() {        this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);        String[] headers = new String[]{"apples", "bananas"};        String[][] data = new String[][]{{"1", "2"}, {"4", "6"}};        table = new JTable(data, headers);        table.setCellSelectionEnabled(true);        this.add(new JScrollPane(table));        this.pack();        this.setSize(new Dimension(300, 400));    }    private void addKeyBindings() {        //root maps        InputMap im = this.getRootPane().getInputMap( JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);        ActionMap am = this.getRootPane().getActionMap();        //add custom action        im.put(KeyStroke.getKeyStroke(KeyEvent.VK_S, MASK), "save");        am.put("save", saveAction());    }    private AbstractAction saveAction() {        AbstractAction save = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) {     JOptionPane.showMessageDialog(         TestTableKeyBinding.this.table, "Action Triggered.");     table.editingCanceled(null); }        };        return save;    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/507971.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号