gpt4 book ai didi

java - JButton 位于类中,actionlistener 位于 main 中

转载 作者:行者123 更新时间:2023-12-02 02:54:58 24 4
gpt4 key购买 nike

我是 Java 编程新手。我想创建JButton在类中创建 ActionListener在 main 中通过传递按钮参数。但它会抛出一个错误:

Cannot make a static reference to the non-static field newBtn

我的代码如下。

import java.awt.event.*;  
import javax.swing.*;
public class TestBtn {

TestBtn() {
}

public void myBtn(JButton mybtn){
JFrame f=new JFrame("My Example");

mybtn =new JButton("Click Here");
mybtn.setBounds(50,100,95,30);

f.add(mybtn);
f.setSize(400,400);
f.setLayout(null);
f.setVisible(true);
}
}

//我的主程序

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
public class TestBtnMain {
JButton newBtn;

public static void main(String[] args) {
TestBtn btn = new TestBtn();
btn.myBtn(newBtn);

newBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Success");
}
});
}
}

最佳答案

与 C++ 不同,Java 无法通过引用传递参数。所以我将更改您的代码如下:

import java.awt.event.*;  
import javax.swing.*;
public class TestBtn {

TestBtn() {

}
public JButton myBtn(){

JFrame f=new JFrame("My Example");

JButton mybtn =new JButton("Click Here");
mybtn.setBounds(50,100,95,30);

f.add(mybtn);
f.setSize(400,400);
f.setLayout(null);
f.setVisible(true);
return mybtn;
}

}

主类:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
public class TestBtnMain {

public static void main(String[] args) {
TestBtn btn = new TestBtn();
JButton newBtn = btn.myBtn();

newBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Success");
}
});


}
}

而且,正如 Andrew Thompson 已经提到的,您应该使用布局管理器来使您的 UI 适用于不同的平台/屏幕分辨率

关于java - JButton 位于类中,actionlistener 位于 main 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43247264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com