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

标签 java swing jbutton actionlistener

我是 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/

相关文章:

java - Mac 上的 SWT 图像按钮不起作用

java - 使用递归选择数组的奇数/偶数元素

Java Graphics2D 移动物体停在中间

java - 使用 Java Swing 和 JEditorPane 将标记的文本设为粗体

java - Spring MVC - 来自过滤器的内容类型感知响应

java - 深度嵌套 if 语句删除 PMD

java - java图形重绘方法是如何工作的

java - 启用/禁用 JButton 只能运行一次

java - 单击 JButton 添加新的 JTextField

java - KeyBinding,无法获取按下的按键的String