JFrame 未与 ActionListener 一起出现

问题描述 投票:0回答:2

我是初学者,我已经编写了这段代码,但它似乎不起作用。我已经运行了代码,由于某些原因,

JFrame
没有出现(类名是匈牙利语,不要介意)。

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ó();
    }
}
java swing jframe awt actionlistener
2个回答
2
投票

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

在您的情况下,如果您想创建

főMásolgató
的实例,则需要调用 Java 定义的默认无参数构造函数,而不是
void
方法
főMásolgató

这是一个调整代码的示例:

public class főMásolgató implements ActionListener {

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

    // this is still a no-arg constructor, but unlike in your code,
    // this is defined by you, and not automatically 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());
    }
}

1
投票

你的错误是

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ó(){ ... }

那么你的块就是 构造函数

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

© www.soinside.com 2019 - 2024. All rights reserved.