在JFrame启动时将焦点放在JTextArea上

时间:2014-07-14 11:36:16

标签: java swing

我知道这是有问题的,我已经使用了论坛中提供的一些解决方案/示例,但它们似乎无法为我工作。

基本上我有JInternalFrames,它包含JTextAreas,我希望它当JInternalFrame是可见焦点时,即光标放在JTextArea上,而不是用户必须通过点击JTextArea手动放置光标。

以下是我尝试的解决方案:

解决方案1:

textAreaUName.requestFocus(true);

解决方案2:

textAreaUName.requestFocus(true);
textAreaUName.requestFocusInWindow();

如果您已经分别看到问题,请再次道歉。

感谢任何想法。

1 个答案:

答案 0 :(得分:1)

这将把焦点设置在一个非空且可聚焦的JComponent上。

public final void requestFocus(final JComponent component)
{
    Runnable r = new Runnable() {
        @Override
        public void run() {
            while (!component.isFocusOwner()) {
                component.requestFocusInWindow();
                try {
                    Thread.sleep(1);
                } catch (InterruptedException ex) {
                    Logger.getLogger(TestFrame.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    };
    if(component!=null&&component.isFocusable())
    {
        Executors.newCachedThreadPool().execute(r);
    }
}