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);
}
}
这是我的“Log”类的编码, 我的想法是来自我的主类的字符串将显示在JTextPane中。
我是java的新手,所以我知道使用构造函数可能不是最好的方法。
为什么我的构造函数中的String a无法添加到我的JTextPane?
如果我没有提供足够的信息,请告诉我,我尽量保持简单。
答案 0 :(得分:2)
当您创建Log类的新实例并将其传递给String(在本例中为“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);
}
答案 1 :(得分: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);
}
看来重载的构造函数缺少一些东西。