目录
窗体的构造
最近在学习写JFrame窗体时,发现插入的控件在运行时总是不能直接出现,以下是窗口的构建方法和按钮组件的构造方法
public lmain(){
this.setSize( width,height);
this.setIconImage(new ImageIcon("look/tupian/shuzi.png").getImage());//小图标
this.setLocationRelativeTo(null);//窗口居中
this.setDefaultCloseOperation(3);//关闭事件
this.setResizable(true);//窗口大小可调节
this.setTitle("连连看");
this.setVisible(true);//窗体可见
}
public void Do(){
this.setLayout(new GridLayout(3,3,0,0));
for(int i=0,k=0;i<9;i++){
String str="look/tupian/"+(++k)+".png";
JButton bt=new JButton();
bt.setMargin(new Insets(0,0,0,0));// 设置按钮边框和标签之间的间隔
bt.setContentAreaFilled(false);//设置不绘制按钮的内容区域
bt.setBorderPainted(true);// 设置绘制按钮的边框
bt.setIcon(new ImageIcon(str));// 设置默认情况下按钮显示的图片
bt.addMouseListener((MouseListener) new MouseAdapter() {//鼠标点击事件
public void mouseClicked(MouseEvent e){
bt.setVisible(false);//按钮不可见
}
});
getContentPane().add(bt);
}
}
执行代码后发现窗口上未出现按钮组件
在对窗口进行拖拽大小,或者缩放后按钮又可以出现
原因
出现这样的
原因是:在构建窗体时就已经写入了窗体可视化,窗口在构建后直接被绘制,使得后面的组件放置后不可见。但是对窗体拖拽大小,或者缩放时,窗体重绘按钮又可见了。
解决方法
我们在构建窗口的方法中删掉窗口可视化,在组件全部构建完成后添加回来即可解决
public static void main(String args[]){
lmain look=new lmain();
look.Do();
look.setVisible(true);//窗口可视化.最后可视化,防止组件消失
}
运行结果如下
发现窗口中组件可以直接出现