当前位置: 首页 > 知识库问答 >
问题:

addActionListener使用“.this”的替代方法?静态上下文问题

令狐唯
2023-03-14

为GUI创建了登录类,将所有GUI构造添加到一个方法中,以便我可以在启动时从我的主类中调用它。调用方法抛出错误“'GUILoginPage.this'不能从静态上下文中引用”。

这方面有什么解决办法?我理解不能使用的原因。但我没有看到任何解决方案

public static void main() {

    JFrame frame = new JFrame();
    JButton loginButton = new JButton("Login");

    JTextField userIDField = new JTextField();
    JPasswordField userPasswordField = new JPasswordField();
    JLabel userIDLabel = new JLabel("Username:");
    JLabel userPasswordLabel = new JLabel("Password:");


    userIDLabel.setBounds(50, 100, 75, 25);
    userPasswordLabel.setBounds(50, 150, 75, 25);

    userIDField.setBounds(125, 100, 200, 25);
    userPasswordField.setBounds(125, 150, 200, 25);

    loginButton.setBounds(125, 200, 100, 25);
    loginButton.addActionListener(this);
    frame.add(userIDLabel);
    frame.add(userPasswordLabel);
    frame.add(userIDField);
    frame.add(userPasswordField);
    frame.add(loginButton);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 400);
    frame.setLayout(null);
    frame.setVisible(true);
}

共有1个答案

陶鸿畴
2023-03-14

这在静态上下文中没有任何意义。main是静态的,因此它意味着没有可使用的类实例。

在这里,您需要定义并使用自己的操作侦听器来处理按钮单击,例如:

loginButton.addActionListener(new ActionListener() { 
  public void actionPerformed(ActionEvent e) { 
    performLogin();
  } 
} );
 类似资料:
  • 你能帮我用下面的代码吗。错误是:“不能在静态上下文中使用此”

  • 现在的问题是,我是否可以创建这些函数一次,并像助手方法一样重用它们。 一个威胁是线程安全。我用一个简单的测试来检查这个JUnit测试: 我用的是VMLENS。我可以通过更改变量来优化测试,这样可以检查随机性。目的是查看这些使用相同函数的多个线程是否因为并发访问而混淆了它们的输入。测试没有返回任何阴性结果。请对测试是否符合目标做出评论。 上面使用的结果是否也可以应用于和? 对函数和字节码的更多熟悉可

  • 问题内容: 我有一群学生。首先,我想按标记对它们进行分组。然后,我想进一步将这些集合归为同名学生。 我收到一个错误消息, 非静态方法不能从静态上下文中引用。 是。我非常清楚,没有实例就无法引用非静态方法。但是,对于所有这些流操作,我对真正出了什么问题感到有些困惑。 而不是如何解决这个问题;我真的很想知道这是怎么回事。您的任何意见表示赞赏! 因为如果我写下面的分组是完全有效的; 这是我的Studen

  • 我正在编写此代码,它显示了错误非静态方法googleapiability . isgoogleplayservicesavailable(上下文上下文)和googleapiability . get error dialog(Activity Activity,int errorCode,int requestCode)不能从静态上下文中引用。

  • 问题内容: 我想一劳永逸地理解这一点。 为此,请原谅下面粘贴的大量代码,但是我不想遗漏任何细节。 我唯一更改的是加载的URL。但这不会导致错误。 我想将我的函数称为“ readPosiitons ”。简单的解决方案,使其静态。真正的解决方案,我不确定。 请帮助我更好地了解如何以正确的方式解决此错误。 谢谢!! 问题答案: 真正的解决方案?不要在方法中放太多东西。那是给菜鸟的。 Java是一种面向对

  • 所以我尝试绑定我的Numpad键,以便在计算器应用程序中使用它们,但当我尝试从主窗口以字符串形式发送keyEvent时。java到我的MainWindowController公共void方法它给了我一个错误“不能从静态上下文引用非静态方法”,即使我的类都不是静态的?以下是主窗口代码: } 这里是MainWindowController文件(看keyPress方法)