我已经制作了这个简单的文本编辑器程序,但无法弄清楚在程序运行时如何更改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();)

09-05 10:23