我的观点:要使某组件获得焦点,必须先使组件所在的框架设置为可见,才能有效。
验证(实践中遇到的问题):
程序功能:画图形元素
程序结构:DoodlePa.java Doodle1.java
先贴出组件类DoodlePa的实现:
DoodlePad.java
以下为程序主框架(Doodle1类):
发现的问题:pad无法获得焦点,输出结果总是为false。画图时不响应键盘的输入。
通过在网上搜索,发现在1991年,老外就遇到同样的问题了(http://www.codeguru.com/forum/archive/index.php/t-31997.html),跟贴的一个仁兄给出了他的解答:组件所在的Frame必须先设置为可见,requestFocusInWindow才会起作用。在构造器中是不可能获得焦点的。
于是我对Doodle1进行了改写,果然可以获得焦点了:
结论:我的观点得到验证了哇~