Java GridLayout在三个相同Panel中,只有一个显示正确了,请大神进来看看
我编写了一个日历的程序,在一个Panel上初始化三个相同的日历,这三个日历的panel都设置为Gridlayout(6,7)布局,为什么只有一个panel显示正确了,其他的都少显示一列?

private class JP3 extends JPanel{
private static final long serialVersionUID = 1L;
private int offset=0;
private LabelManager labelmanager;
public JP3(int pos){
// super(new GridLayout(6,7));
this.setLayout(new GridLayout(6,7));
this.setPreferredSize(new Dimension(width,170));
offset=pos-1;
labelmanager=lm[pos];
initJP3();
}
private void initJP3(){
updateDate();
}
public void updateDate(){
this.removeAll();
labelmanager.clear();
Date temp=select.getTime();
Calendar select=Calendar.getInstance();
select.setTime(temp);
select.add(Calendar.MONTH, offset); //根据offset改变日期
select.set(Calendar.DAY_OF_MONTH,1);
int index=select.get(Calendar.DAY_OF_WEEK);
for(int n=0;n<index;n++){ //在本月1号开始之前添加空白标签
JLabel blank=new JLabel();
this.add(blank);
}
int sum=select.getActualMaximum(Calendar.DAY_OF_MONTH);
for(int i=0;i<sum;i++){
labelmanager.addLabel(new MyLabel(select.get(Calendar.YEAR),
select.get(Calendar.MONTH),select.get(Calendar.DAY_OF_MONTH),offset));
select.add(Calendar.DAY_OF_MONTH,1);
}
for(MyLabel my:labelmanager.getLabels()){
this.add(my);
}
select.setTime(temp); //恢复到当前日期
}
}
private class MyLabel extends JLabel implements Comparator<MyLabel>,MouseListener{
/**
*
*/
private static final long serialVersionUID = 1L;
private int year,month,day;
private boolean isSelected;
private int offset;
@SuppressWarnings("unused")
public MyLabel(){
}
public MyLabel(int year,int month,int day,int offset){
super(""+day,JLabel.CENTER);
this.offset=offset;
this.year=year;
this.day=day;
this.month=month;
this.setFont(font);
}
}
private class LabelManager{
private List<MyLabel> list;
public LabelManager(){
list=new ArrayList<MyLabel>();
}
public void addLabel(MyLabel my){
list.add(my);
}
}
...全文
相关推荐
JavaSwing GridLayout 网格布局的实现代码
主要介绍了JavaSwing GridLayout 网格布局的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
GridLayout Panel for .NET-开源
一个非常简单编程的 .NET 兼容库,将 Java 的布局管理和 LayoutManagers 概念引入 .NET,重点是 GridLayout 和 VB.NET。
java 应用GridLayout设计版面
java 应用GridLayout设计版面 java 应用GridLayout设计版面
GridLayout 用法
GridLayout 用法 简洁明了 方便学习
java 显示多种字体
实现多种字体展示,展示黑体,斜体,粗体以及各种字号


