JFrame 不与 ActionListener 一起出现

JFrame doesn't appear with ActionListener

我是初学者,我已经编写了这段代码,但它似乎不起作用。我有 运行 代码,但由于某些原因 JFrame 没有出现(class 名称是匈牙利语,请不要介意)。

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class főMásolgató implements ActionListener {

    JButton b;
    JLabel label;
    JTextField tfield;
    JFrame frame;

    public void főMásolgató(){
        frame = new JFrame();
        b = new JButton("Másolás");
        label = new JLabel("");
        tfield = new JTextField();
        frame.add(b);
        frame.add(label);
        frame.add(tfield);
        b.addActionListener(this);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        label.setText(tfield.getText());
    }
}

public class másolgatóHasználata {
    public static void main(String args[]){
        new főMásolgató();
    }
}

void 方法 főMásolgató 不是 class 构造函数。

当您实例化一个新的 főMásolgató 时,您只是调用默认的 no-args 构造函数,而不是显示 JFrame.

的无效方法 főMásolgató

你应该re-write这样:

public class főMásolgató implements ActionListener {

    JButton b;
    JLabel label;
    JTextField tfield;
    JFrame frame;

    //This is now YOUR no-args constructor not the default one provided by Java
    public főMásolgató(){
        frame = new JFrame();
        b = new JButton("Másolás");
        label = new JLabel("");
        tfield = new JTextField();
        frame.add(b);
        frame.add(label);
        frame.add(tfield);
        b.addActionListener(this);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        label.setText(tfield.getText());
    }
}

你的错误是

public void főMásolgató(){ ... }

是一个函数不是构造函数。

如果您这样做,您的代码将起作用:

public class másolgatóHasználata {
  public static void main(String args[]){
    new főMásolgató().főMásolgató();
  }}

因为这里他会使用默认构造函数。然后他会调用你的函数。 或者您可以通过更改来修复它:

public void főMásolgató(){ ... }

public főMásolgató(){ ... }

那么你的块就是构造函数

提示:你可以通过运行逐行调试。这会让您知道您的区块是否 运行。