gpt4 book ai didi

java - JTree 键绑定(bind)

转载 作者:行者123 更新时间:2023-12-01 18:44:57 25 4
gpt4 key购买 nike

我正在尝试为 JTree 重新绑定(bind) F2 键,如此处所述 https://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html 。代码如下:


System.out.println(DataModelTree.getInputMap(JComponent.WHEN_FOCUSED).get(KeyStroke.getKeyStroke("F2")));
//This gives string "startEditing"

DataModelTree.getActionMap().put("startEditing", new javax.swing.AbstractAction() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("F2 pressed");
}
});

也尝试过这个变体:

DataModelTree.getActionMap().put(DataModelTree.getInputMap(JComponent.WHEN_FOCUSED).get(KeyStroke.getKeyStroke("F2")), new javax.swing.AbstractAction() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("F2 pressed");
}
});

尝试创建单独的非匿名操作类。尝试初步删除 InputMap 和父 InputMap 中的条目。尝试在其他模式下重新绑定(bind):WHEN_ANCESTOR_OF_FOCUSED_COMPONENT 和 WHEN_IN_FOCUSED_WINDOW。什么都不起作用。 JTree 键绑定(bind)保持不变。

请帮忙。

最佳答案

抱歉,我们无法回答您的问题,因为我们没有看到您的完整代码。请提供runnable class ,它会重现您的错误行为,以便我们可以更轻松地确定您的错误在哪里。

这是一个小示例,如何为 F2 键提供树的编辑

import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

/**
* <code>TestTree</code>.
*/
public class TestTree {

public static void main(String[] args) {
SwingUtilities.invokeLater(new TestTree()::startUp);
}

private void startUp() {
JTree tree = new JTree();
tree.setEditable(true);
tree.getActionMap().put(tree.getInputMap().get(KeyStroke.getKeyStroke("F2")), new AbstractAction() {

@Override
public void actionPerformed(ActionEvent e) {
if (tree.getSelectionPath() != null) {
tree.startEditingAtPath(tree.getSelectionPath());
} else {
JOptionPane.showMessageDialog(tree, "Nothing selected");
}
}
});
JFrame frm = new JFrame("edit tree");
frm.add(new JScrollPane(tree));
frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frm.setSize(300, 200);
frm.setLocationRelativeTo(null);
frm.setVisible(true);
}
}

关于java - JTree 键绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59855079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com