我有这段代码并阅读了validate可以指的是布置容器的子组件。“布局相关的更改,例如设置组件的边界,或将组件添加到容器中,会自动使容器失效。” (来源:javadoc)。
但是,我认为保留validate()或从这段代码中删除它之间没有任何区别。你能给我一个令人信服的例子,你可以在两种情况下(有或没有验证)看到不同的行为来证明一个观点吗?任何其他意见/建议表示赞赏。
public class Sw1
extends JApplet
{
JLabel lbl;
public void init()
{
lbl = new JLabel ("a label");
JPanel pan = (JPanel) getContentPane ();
pan.add(lbl);
validate();
}
}
这是我打算按下按钮添加标签后的程序。当我按下按钮时它会呈现一个异常:
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Sw_test
extends JApplet
implements ActionListener
{
JLabel lbl;
JButton bt ;
JPanel pan ;
JLabel l;
public void init()
{
lbl = new JLabel ("label 1");
bt = new JButton ("go ahead, press me");
bt.addActionListener(this);
JPanel pan = (JPanel) getContentPane ();
pan.setLayout(new FlowLayout());
pan.add(lbl);
pan.add(bt);
validate();
}
public void actionPerformed(ActionEvent ev)
{
l = new JLabel("new label");
pan.add(l);
}
}