将焦点设置为文本字段

2022-09-03 08:58:05

我有一个用netbeans开发的应用程序,我想在显示面板时将焦点设置为某个。我已经阅读了许多帖子,并尝试了各种方法,但没有工作。其中一个主要问题是将所需的代码放在何处,我相信在我的情况下是jTextFieldthis.txtMessage.requestFocusInWindow();

有一些帖子表明使用窗口监听器,但是由于netbeans已经生成了GUI,我无法看到如何实现接口,因为我无法编辑创建jPANEL等的代码。整个事情非常令人沮丧,我真的不相信这应该那么困难。

就像测试一样,我将 添加到面板上的一个按钮,它确实将焦点设置为所需的输入。requestFocusInWindow();


答案 1

我遇到过类似的情况,当面板显示时,我需要将焦点设置在面板内的文本框上。面板是在应用程序启动时加载的,因此我无法在构造函数中设置焦点。由于面板未加载或未被赋予对显示的焦点,这意味着我没有事件可以触发焦点请求。

为了解决这个问题,我在我的main中添加了一个全局方法,该方法调用面板中在文本区域上调用的方法。在调用 show 之后,我将对全局方法的调用放在显示面板的按钮中。这意味着将显示面板,然后在显示面板后,文本区域分配焦点。希望这有意义并有所帮助!requestFocusInWindow()

此外,您可以通过右键单击设计视图中的对象并选择自定义代码来编辑大多数自动生成的代码,但是我认为它不允许您编辑面板。


答案 2

我不确定我在这里是否遗漏了什么,但是没有理由不能向面板添加听众。

在 Netbeans 中,只需点击编辑器窗口左上角的“源”按钮,即可编辑大部分代码。实际的布局代码大多是锁定的,但如果需要,您甚至可以对其进行自定义。

据我所知,应该设置第一次显示窗口时的默认焦点。如果要在窗口已经显示后请求焦点,则应使用txtMessage.requestFocusInWindow()txtMessage.requestFocus()

对于测试,您只需在构造函数中添加一个侦听器:

addWindowListener(new WindowAdapter(){ 
  public void windowOpened( WindowEvent e){ 
    txtMessage.requestFocus();
  } 
});