Swing下,鼠标点击组件不是自动获得焦点的么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swing下,鼠标点击组件不是自动获得焦点的么?相关的知识,希望对你有一定的参考价值。

我用Swing写了一个界面,里面有几个JPanel组件和几个awt的TextField组件,当鼠标点中

TextField的时候,焦点自动切换到TextField上,但是当我鼠标再点击JPanel的时候,焦点却不

能切换,始终呆在TextField上,现在我用鼠标监听,在public void mouseClicked(MouseEvent

e)里使用requestFocusInWindow(),暂时解决了问题,但是毕竟不是正规方法,求教正确的焦点

处理方法。
回 manyfaces:
我用JPanal扩展出了一个JCanvas类,用来画图,测试的时候,里面是填充满了Image的,JCanvas类实现了鼠标监听,但是函数是空的(非abstract),不知道是不是这个导致了系统自带的焦点响应鼠标功能失效。目前我在子类的mouseClicked里使用requestFocusInWindow(),暂时解决了问题。

回 猜不对:
请问是用哪个监听器?能详细说说么?

参考技术A JPanel通常只是一个概念上的东西,通常是不可见,不像textfield,它没有焦点可以,我不知道你是怎么点中JPanel的,它有东西给你点么? 参考技术B 建议你完全使用Swing 的组件,不要AWT /Swing 混合,这样很容易出问题的。 Swing 是轻量级的实现。 参考技术C 给panel一个事件监听着!

VS2010下,RichEdit 2.0获得焦点后 ,自动全选并且自动滚到到最后一行,请问怎么解决?

编译环境:Win7 sp1 ; VS2010 sp1 工程是Unicode 工程,基于对话框, 只有一个richedit 控件,铺满整个对话框!当鼠标点击其他东西,再点击该窗体时:则自动全选并且自动滚到到最后一行!如果能绝决该问题,再加分!

可以处理richedit控件的EN_SETFOCUS(获得焦点)和EN_KILLFOCUS(失去焦点)消息

声明一个CHARRANGE变量(比如叫cr)记录光标位置,在EN_KILLFOCUS处理函数中调用GetSel(cr)记录当前光标位置,然後在EN_SETFOCUS处理函数中调用SetSel(cr)回覆之前记录的光标位置
参考技术A richedit.SetOptions(ECOOP_OR,ECO_SAVESEL);

以上是关于Swing下,鼠标点击组件不是自动获得焦点的么?的主要内容,如果未能解决你的问题,请参考以下文章

VS2010下,RichEdit 2.0获得焦点后 ,自动全选并且自动滚到到最后一行,请问怎么解决?

C# CefSharp封装的浏览器触摸获得焦点,有光标。无法输入中文。鼠标点击后正常。求解答谢谢!

WPF 处理textbox的样式问题,点击获得焦点背景颜色变化,当点击窗体其他地方(非控件),textbox自动

swing焦点快速切换

Delphi做的一款软件,最小化后edit不能获得焦点

java swing 去掉按钮文字周围的焦点框