无法从其他函数向Java中的JTextArea添加文本
我用Java编写了一个简单的程序,它只包含一个文本区域和一个按钮。该按钮用于添加“文本”。然而,这对我不起作用 另一方面:我正努力使我的函数尽可能短。(我不想要代码行太多的函数) 首先,我创建JFrame无法从其他函数向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
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));