尝试追加JTextArea时出错

时间:2015-11-29 01:48:17

标签: java

我尝试在主线程中附加文本但出现以下错误:

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");
    }

}

是什么让这段代码无效?

抱歉我的英语不好但我希望你能理解我的问题。

谢谢:)

1 个答案:

答案 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");
}
相关问题