gpt4 book ai didi

java - 在 Swing 中右键单击焦点

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

今天在我的 Swing 应用程序中,当我左键单击时,文本区域会获得焦点。当我右键单击任何其他文本字段时,会出现弹出菜单,但该文本区域未获得焦点。焦点保留在之前左键单击的字段上。如何从上一个字段中移除焦点并使其显示在右键单击的字段上?

if (e.isPopupTrigger()) {
ContextMenu menu = new ContextMenu();
menu.show(tree, e.getX(), e.getY());
}

在 mouseRelease 上执行此操作。

最佳答案

假设您的意思是“聚焦”而不是“突出显示”:

创建 JTextField 的子类,添加鼠标监听器并强制文本字段在按下、释放或单击鼠标按钮时请求焦点(三个版本以确保它适用于每个平台)。

import javax.swing.JTextField;

public class TextFieldRClick extends JTextField {

public TextFieldRClick() {
super();
createMouseListener();
}

public TextFieldRClick(int cols) {
super(cols);
createMouseListener();
}

private void createMouseListener() {
this.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mousePressed(java.awt.event.MouseEvent evt) {
requestFocusInWindow();
}

@Override
public void mouseReleased(java.awt.event.MouseEvent evt) {
requestFocusInWindow();
}

@Override
public void mouseClicked(java.awt.event.MouseEvent evt) {
requestFocusInWindow();
}
});
}
}

然后您可以直接将文本字段创建为“new TextFieldRClick()”,使它们能够在用户右键单击它们时获得焦点。

我遇到了同样的问题,这为我解决了。

编辑:将 requestFocus() 更改为 requestFocusInWindow()。 requestFocus() 据说依赖于平台,不应再使用。

关于java - 在 Swing 中右键单击焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35513767/

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