无法从其他函数向Java中的JTextArea添加文本

无法从其他函数向Java中的JTextArea添加文本,java,function,static,actionlistener,jtextarea,Java,Function,Static,Actionlistener,Jtextarea,我用Java编写了一个简单的程序,它只包含一个文本区域和一个按钮。该按钮用于添加“文本”。然而,这对我不起作用 另一方面:我正努力使我的函数尽可能短。(我不想要代码行太多的函数) 首先,我创建JFrame private static void createFrame() { //Build JFrame JFrame frame = new JFrame("Text Frame"); frame.setLayout(null); frame.setSize(50

我用Java编写了一个简单的程序,它只包含一个文本区域和一个按钮。该按钮用于添加“文本”。然而,这对我不起作用

另一方面:我正努力使我的函数尽可能短。(我不想要代码行太多的函数)

首先,我创建JFrame

private static void createFrame()
{
    //Build JFrame
    JFrame frame = new JFrame("Text Frame");
    frame.setLayout(null);
    frame.setSize(500,400);

    Container contentPane = frame.getContentPane();
    contentPane.add(textScrollPane());
    contentPane.add(buttonAddText());

    //Set Frame Visible
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
然后是文本区域和滚动窗格(用于添加滚动条)

最后是按钮

private static JButton buttonAddText()
{
    JButton testbutton = new JButton("TEST");
    testbutton.setBounds(20, 280, 138, 36);

    testbutton.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e)
        {
            //action listener here
            textArea().insert("TEXT",0);
            System.out.println("Button Tested!");
        }
    });

    return testbutton;
}
当我点击按钮时,它什么也不做。 我只想在JTextArea中添加一个文本。我忘了什么吗?

textArea()每次调用时都返回一个新的JTextArea。因此,buttonAddText()函数正在调用textArea(),并将文本添加到新创建的文本区域中,该文本区域不包含在滚动窗格中

您需要将文本区域的引用传递给textScrollPane()和buttonAddText()函数

类似这样的方法会奏效:

JTextArea jta = textArea();
contentPane.add(textScrollPane(jta));
contentPane.add(buttonAddText(jta));

更改textScrollPane()和buttonAddText(),以便它们接受JTextArea参数,不再在这些函数中调用textArea()来创建新的文本区域。改为使用传递到函数中的JTextArea对象。

我按照您所说的做了,然后,我还为buttonAddText()函数添加了“final JTextArea”,它可以工作!非常感谢。你不使用静电怎么样。静态不是一种跨对象通信机制。相反,为需要更新到其他类的对象提供模型或引用
JTextArea jta = textArea();
contentPane.add(textScrollPane(jta));
contentPane.add(buttonAddText(jta));