gpt4 book ai didi

java - Swing:如何从其编辑器获取 JComponent

转载 作者:行者123 更新时间:2023-11-30 04:32:11 25 4
gpt4 key购买 nike

您通常如何从编辑器中获取 JComponent

示例:

让我们拥有可编辑的JComboBox。因此,组合有一个编辑器(默认情况下为JTextField)。

JComboBox b = new JComboBox();
b.setEditable(true);

现在将“全局”键盘监听器添加到 Swing 应用程序。

Toolkit.getDefaultToolkit().addAWTEventListener(
new AWTEventListener() {
public void eventDispatched(AWTEvent e) {
JComponent c = (JComponent) e.getSource();
System.out.println(c); // <- printing the event source
}
},
AWTEvent.KEY_EVENT_MASK);

在组合框 b 中键入文本的输出显示,按键事件的来源是 b 的编辑器,而不是组合框 b 本身:

javax.swing.plaf.metal.MetalComboBoxEditor$1[,0,0, ...
javax.swing.plaf.metal.MetalComboBoxEditor$1[,0,0, ...
javax.swing.plaf.metal.MetalComboBoxEditor$1[,0,0, ...
...

有没有办法从编辑器或关键事件中获取对 b 的引用?如果没有,我如何获取“当前编辑组合框”的引用?

PS:请不要问我诸如“你为什么需要它?”之类的问题。谢谢。

最佳答案

调用getEditorComponent()。该方法在接口(interface)ComboBoxEditor中定义:

public interface ComboBoxEditor {

/** Return the component that should be added to the tree hierarchy for
* this editor
*/
public Component getEditorComponent();
................

所以首先将其转换为ComboBoxEditor:

Component component = (ComboBoxEditor)event.getSource()).getEditorComponent();

关于java - Swing:如何从其编辑器获取 JComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14381285/

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