为非静态方法创建静态

时间:2015-05-19 19:19:02

标签: java methods non-static

首先,也许我的标题是错的,任何正文都请纠正我的确切问题。 如果你的错误,我的英语很抱歉。 这是我的MainFram类:

public class MainFrame extends JFrame{
    public static JTextField checksum;
    public MainFrame(){
        createComponents();
        actionEvent();
    }
    private void createComponents(){
    ....
    }
    private void actionEvent(){
        ActionListener al = new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent ae) {
                if (ae.getSource() == btnExem){
                actionEvent.btnPerformed(ae);
            }
            else if (ae.getSource() == jfBrowser){
            .........
            }
        }
    }
    copyBtn.addActionListener(al);

    public static void main(String[] args){
        MainFrame f = new MainFrame();
        f.setVisible(true);
        f.setResizable(false);
    }

actionEvent类:

public class actionEvent extends MainFrame{
//example
    public static void btnPerformed(ActionEvent ae){
    checksum.setText("");
    }

我想在MainFrame类中为checksum属性设置private,我在MainFrame类中编写了一个方法setChecksumText:

public void setChecksumText(String t){
        this.checksum.setText(t);
    }

但是IDE显示btnPerformed必须是静态的,所以我不能使用非静态的setChecksumText方法。 我该如何解决?

1 个答案:

答案 0 :(得分:0)

您需要将static添加到setChecksumText()。请注意,校验和为static,它只存在一次,而不是每个对象一次,这意味着我们不能使用this访问它,而是使用类名称(如果变量位于类中,则可以省略该类)同班):

private static JTextField checksum;

public static void setChecksumText(String t) {
    checksum.setText(t); // or: MainFrame.checksum.setText(t);
}