我已经制作了这个简单的文本编辑器程序,但无法弄清楚在程序运行时如何更改GUI组件的属性。
假设这是我的文本编辑器源代码的一部分:
boolean wordwrap = false;
void mainFrame() {
frame = new JFrame("Text Editor");
textArea = new JTextArea(50,20);
textArea.setLineWrap(wordwrap);
假设我添加了一个事件源(
JButton
)作为侦听器以进行更改textArea
的.setLineWrap(boolean)
。像这样:public void actionPerformed(ActionEvent event) {
if(wordwrap) wordwrap = false;
else wordwrap = true;
textArea.setLineWrap(wordwrap);
frame.repaint();
}
但是此代码不起作用!那么,在程序运行时更新或编辑JAVA GUI组件的正确方法是什么?
最佳答案
revalidate and validate()
将更新框架。
您不需要使用repaint()。
最终方法:
public void actionPerformed(ActionEvent event) {
if(wordwrap) wordwrap = false;
else wordwrap = true;
textArea.setLineWrap(wordwrap);
frame.revalidate(); //is preferable but validate() also works.
}
您可以更新整个框架,也可以只更新jComponent(插入TextArea而不是“ frame” .revalidate();)