Frame默认的layout是BorderLayout, 直接add会填满整个frame
而且设置位置大小不起作用
但加个延时竟然起作用了
测试代码如下
package test;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JLabel;
public class SetBou要显示过会才有用 {
public static void main(String[] ags) throws Exception {
Frame frame = new Frame("过会才有用");
frame.setBounds(66, 66, 1600, 900);
JLabel lb = new JLabel("用了JLabel, Label会中文乱码?");
class F{ void 设置位置大小() {
int x=100 , y=100 , w=800 , h=200;
lb.setBounds(x, y, w, h); lb.setLocation(x, y); lb.setSize(w, h);}
}
F f = new F();
f.设置位置大小();
lb.setBackground(Color.darkGray); lb.setFont(new Font("", 0, 30));
lb.setForeground(Color.red);
lb.setOpaque(true); //要设置这个才看得到背景色
frame.add(lb);
f.设置位置大小();
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);;
}
});
f.设置位置大小(); //到这都不起作用
try {Thread.sleep(2000);}catch(Exception ex) {}
f.设置位置大小(); //起作用了
}
}