我是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)。 –