我尝试在主线程中附加文本但出现以下错误:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: chatbox.append
at javaapplication3.JavaApplication3.main(JavaApplication3.java:41)
以下是我的申请的完整代码:
package javaapplication3;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.text.DefaultCaret;
public class JavaApplication3 extends JFrame {
public JavaApplication3() {
setSize(400, 400);
setLayout(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel mypanel = new JPanel(new GridLayout());
mypanel.setBounds(10, 10, 300, 300);
JTextArea chatbox = new JTextArea();
chatbox.setEditable(false);
JScrollPane myscrollpane = new JScrollPane(chatbox);
myscrollpane.setPreferredSize(new Dimension(300, 300));
DefaultCaret caret = (DefaultCaret)chatbox.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
mypanel.add(myscrollpane);
add(mypanel);
setVisible(true);
}
public static void main(String[] args) {
JavaApplication3 myframe = new JavaApplication3();
chatbox.append("hi");
}
}
是什么让这段代码无效?
抱歉我的英语不好但我希望你能理解我的问题。
谢谢:)
答案 0 :(得分:2)
当我通过编译器运行它时,这就是我得到的。
JavaApplication3.java:39: error: cannot find symbol
chatbox.append("hi");
^
symbol: variable chatbox
location: class JavaApplication3
1 error
这更有意义。您在构造函数中实例化了chatbox。因此,从主方法中看不到它。您应该在类中但在构造函数之前创建聊天框。
换句话说,使textField可用于整个类而不仅仅是构造函数。
public class JavaApplication3 extends JFrame {
private final JTextArea chatbox = new JTextArea();
public JavaApplication3() {
// ... Your stuff
chatbox.setEditable(false);
// ... More stuff
}
public appendToChatbox(String s) {
chatbox.append(s);
}
public static void main(String[] args) {
JavaApplication3 myframe = new JavaApplication3();
myframe.appendToChatbox("hi");
}