我在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);
}
然后是TextArea和Scrollpane(用于添加滚动条)
private static JTextArea textArea()
{
JTextArea output = new JTextArea();
output.setLineWrap(true); // Text return to line, so no horizontal scrollbar
output.setForeground(Color.BLACK);
output.setBackground(Color.WHITE);
return output;
}
private static JScrollPane textScrollPane()
{
JScrollPane scrollPane2 = new JScrollPane(textArea());
scrollPane2.setBounds(0, 0, 490, 250);
return scrollPane2;
}
最后,按钮
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中添加一个文本。我忘了什么吗?
答案 0 :(得分:1)
每次调用textArea()时都会返回一个新的JTextArea。因此,buttonAddText()函数调用textArea()并将文本添加到滚动窗格中未包含的新创建的文本区域。
您需要将文本区域的引用传递给textScrollPane()和buttonAddText()函数。
这样的事情会起作用:
JTextArea jta = textArea();
contentPane.add(textScrollPane(jta));
contentPane.add(buttonAddText(jta));
更改textScrollPane()和buttonAddText(),以便它们接受JTextArea参数,并且不再在这些函数中调用textArea()来创建新的文本区域。而是使用传递给函数的JTextArea对象。