关于图形绘制的几个疑问
初学jfc,对几个可能引起绘制的函数不大明白:
1:pack()
这个函数的作用好像是重新调整组件的布局吧??它好像还会直接将调整好的面板重新绘制一下,这时调用的是那个函数呢??repaint()??
2:repaint()
调用组件的paint,或update函数,但在下面的程序中:
public class u {
public static void main(String[] args) {
final JFrame f = new JFrame("Add Example 2");
final Container cp = f.getContentPane();
cp.setLayout(new FlowLayout());
cp.add(new JButton("Left"));
cp.add(new JButton("Middle"));
cp.add(new JButton("Right"));
f.pack();
f.setVisible(true);
try {
Thread.sleep(5000);
} catch (Exception e) {
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
cp.add(new JButton("Middle Right"), 2);
f.repaint(); }
});
}
}
却没有将后来添加的按纽显示出来,难道必须调用pack()??
3:setSize
将上面的程序改以下
public class u {
public static void main(String[] args) {
final JFrame f = new JFrame("Add Example 2");
final Container cp = f.getContentPane();
cp.setLayout(new FlowLayout());
cp.add(new JButton("Left"));
cp.add(new JButton("Middle"));
cp.add(new JButton("Right"));
f.pack();
f.setVisible(true);
try {
Thread.sleep(5000);
} catch (Exception e) {
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
cp.add(new JButton("Middle Right"), 2);
f.setSize(500,500);
}
});
}
}
这时只是调整了f的大小而已,后来的按钮也没显示出来,请问这是为什么??