class 中的 JButton 和主要的 actionlistener
JButton in the class and actionlistener on the main
我是 Java 编程新手。我想在 class 中创建 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");
}
});
}
}
您正在使用变量 newBtn
,但没有使用任何对象。它是一个实例变量,因此需要一个对象才能访问。
应更改此声明
btn.myBtn(newBtn);
使用 class TestBtnMain
的实例访问 newBtn
或者您可以使 newBtn
静态。
static JButton newBtn;
与 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;
}
}
主要class:
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 使用不同的 platforms/screen 分辨率
您的 TestBtn class 应该是:
import java.awt.event.*;
import javax.swing.*;
public class TestBtn {
private JFrame f;
private JButton mybtn;
TestBtn() {
f=new JFrame("My Example");
mybtn =new JButton("Click Here");
}
public void myBtn(){
mybtn.setBounds(50,100,95,30);
mybtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Success");
}
});
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 {
public static void main(String[] args) {
TestBtn btn = new TestBtn();
btn.myBtn();
}
}
我是 Java 编程新手。我想在 class 中创建 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");
}
});
}
}
您正在使用变量 newBtn
,但没有使用任何对象。它是一个实例变量,因此需要一个对象才能访问。
应更改此声明
btn.myBtn(newBtn);
使用 class TestBtnMain
的实例访问 newBtn
或者您可以使 newBtn
静态。
static JButton newBtn;
与 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;
}
}
主要class:
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 使用不同的 platforms/screen 分辨率
您的 TestBtn class 应该是:
import java.awt.event.*;
import javax.swing.*;
public class TestBtn {
private JFrame f;
private JButton mybtn;
TestBtn() {
f=new JFrame("My Example");
mybtn =new JButton("Click Here");
}
public void myBtn(){
mybtn.setBounds(50,100,95,30);
mybtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Success");
}
});
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 {
public static void main(String[] args) {
TestBtn btn = new TestBtn();
btn.myBtn();
}
}