java面板刷新

兆帅 2011-08-04 05:02:39
public class Gui extends JFrame{
public static int width=6;
public static int height=6;
JButton jb[];
JPanel main;

Gui(){
init();


System.out.println("在构造方法内!!");
}
public void init(){

this.dispose();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jb=new JButton[width*height+1];
//初始化小 默认为简单模式

main=new JPanel();
main.setLayout(new GridLayout(width,height));
for(int i=1;i<=width*height;i++){
jb[i]=new JButton();
main.add(jb[i]); //从第二个元素开始赋值!!
}

this.add(main,BorderLayout.CENTER);
//创建面板

this.setBounds(100, 100, 400, 450);
this.setVisible(true);



}

public void refresh(){
System.out.println("在refresh方法内!");
this.init();

}

public void select(int width,int height){

this.width=width;
this.height=height;
this.refresh();

}






public static void main(String[]args){
Gui gui=new Gui();
gui.select(10, 10);

}

}
调用select方法,为何面板还是6*6的格子,不解!求人给讲讲面板怎么进行刷新的呀?
...全文
257 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
QQUCHAO 2013-05-31
  • 打赏
  • 举报
回复
楼上说的对使用JPanel对象的UpdateUI()方法,可以刷新面板。
兆帅 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hfzlmx 的回复:]
1、把init方法里的this.setBounds(100, 100, 400, 450); 去掉

2、main 方法最后加上
gui.pack();
gui.setSize(800, 600);

楼主多看看pack方法就明白了。
[/Quote]
恩 对的 不过要先把原来的面板清除掉。
兆帅 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sd4324530 的回复:]

每一个组件都有一个叫UpdateUI();的方法,作用就是刷新该组件
[/Quote]
恩 对的 不过要先把原来的面板清除掉。
hfzlmx 2011-08-04
  • 打赏
  • 举报
回复
1、把init方法里的this.setBounds(100, 100, 400, 450); 去掉

2、main 方法最后加上
gui.pack();
gui.setSize(800, 600);

楼主多看看pack方法就明白了。
sd4324530 2011-08-04
  • 打赏
  • 举报
回复
每一个组件都有一个叫UpdateUI();的方法,作用就是刷新该组件
zwb_1988 2011-08-04
  • 打赏
  • 举报
回复
看看,面板应该有个Update方法

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧