0
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextPane;

public class Log extends JFrame {
    private static final long serialVersionUID = 1L;

    String logx = "LOG: ";
    JTextPane txt = new JTextPane();
    JPanel p = new JPanel();
    String addTo;

    public Log() {
        super("LOG");
        setSize(720, 600);
        setResizable(false);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        p.add(txt);
        add(p);
        txt.setText(logx);
    }

    public Log(String a) {
        addTo = a;
        txt.setText(addTo);

    }
}

这是我的“日志”类的编码,其想法是我的主类中的字符串将显示在 JTextPane 中。

我是java新手,所以我知道使用构造函数可能不是最好的方法。

为什么我的构造函数中的 String a 不能添加到我的 JTextPane 中?

如果我没有提供足够的信息,请告诉我,我尽量保持简单。

4

2 回答 2

2

当您创建 Log 类的新实例并向其传递一个字符串(在本例中为“a”)时,它将运行其中的代码public Log(String a) {而不会运行该public Log() {部分。您有两个不同的构造函数,但根据您在创建类时传递的内容,只会调用其中一个。现在,您正在尝试设置 JTextPane 的文本,但尚未设置屏幕(public Log() {从未调用过)。为了解决这个问题,请尝试更改

public Log(String a) {
    addTo = a;
    txt.setText(addTo);

}

public Log(String a) {
    super("LOG");
    setSize(720, 600);
    setResizable(false);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    p.add(txt);
    add(p);
    addTo = a;
    txt.setText(addTo);

}
于 2013-02-23T06:28:09.453 回答
1

你的第一个构造函数已经工作了吗?如果是这样,请尝试:

public Log(String a) {
    super("LOG");
    setSize(720, 600);
    setResizable(false);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    p.add(txt);
    add(p);
    addTo = a;
    txt.setText(addTo);

}

看来您的重载构造函数缺少一些东西。

于 2013-02-23T06:30:28.250 回答