我是Java编程新手。我想在该类中创建JButton
,并通过传递按钮参数在主体中创建ActionListener
。但它会报错:JButton中的类和actionlistener上的主
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");
}
});
}
}
只是不这样做......非常糟糕的编程风格。 'public class TestBtnMain {JB} newBtn; '应该是'public class TestBtnMain {静态JButton newBtn; ' – XtremeBaumer
*“我想在类内创建'JButton',并通过传递按钮参数在主类中创建'ActionListener'。”*为什么?请参阅[什么是XY问题?](http://meta.stackexchange.com/q/66377)*“我是Java编程新手”。*那么您可能应该避免一段时间的GUI编程。这是一个高级话题。回到GUI编程,'f.setLayout(null);'这是你应该**从未做过的事情之一。 Java GUI必须在不同的语言环境中使用不同的PLAF来处理不同的操作系统,屏幕大小,屏幕分辨率等。因此,他们不利于.. –
..像素完美的布局。请使用布局管理器或[它们的组合](http://stackoverflow.com/a/5630271/418556)以及[white space]的布局填充和边框(http://stackoverflow.com/a/17874718/ 418556)。 –