继承JPanel写了个类,但是不显示。如果把它和Frame放在一个.java里,就可以正常显示,单独一个文件new出来就不可以。
依然是不知其所以然,从网上找到了网友的建议们,并一一实践之。
==========看起来很美,然而并没有用的=============
1.setVisible()
JPanel calendarPanel = new CalendarPanel();
calendarWindow.setContentPane(calendarPanel);
calendarPanel.setVisible(true);
2.updateUI()
JPanel calendarPanel = new CalendarPanel();
calendarWindow.setContentPane(calendarPanel);
calendarPanel.updateUI();
=============================================
实际上可以满足 ‘一个文件放两个类感觉很丑啊’ 的强迫症的解决方式是这样的:
通过返回JPanel 可以显示
参考资料:http://www.oschina.net/code/piece_full?code=36515
可是这跟继承什么类并没有关系啊...
为什么我用构造类直接拿出来就是不显示呢...代码现在是这个样子的...等我再跟它磕一会儿!
public class CalendarPanel extends JPanel{
private static final long serialVersionUID = 1L;
private Calendar calendar;
private JPanel yearPanel = new JPanel();
private static final String DEFAULTFORMAT = "yyyy-MM-dd";
private static final String[] showTEXT = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
private static int defaultStartDAY = 1;//0 is from Sun, 1 is from Mon, 2 is from Tue...
public CalendarPanel(){
super();
SimpleDateFormat sdf = new SimpleDateFormat(DEFAULTFORMAT);
BorderLayout manager = new BorderLayout();
initCalendar();
initYearPanel();
// manager.addLayoutComponent(yearPanel, BorderLayout.NORTH);
manager.addLayoutComponent(initDayListPanel(), BorderLayout.CENTER);
this.setLayout(manager);
}
private void initCalendar(){
calendar = Calendar.getInstance();
}
private void initYearPanel(){
FlowLayout yearControl;
}
private JPanel initDayListPanel(){
JPanel dayListPanel = new JPanel();
dayListPanel.setLayout(new GridLayout(1,7,5,5));
//set weekday title
for(int i = 0, daySub = defaultStartDAY; i < 7; i++){
if(daySub > 6){
daySub = 0;
}
JLabel weekDayTitle = new JLabel(showTEXT[daySub],JLabel.CENTER);
dayListPanel.add(weekDayTitle);
daySub++;
}
return dayListPanel;
}
}
是不是暴露了我继承没学好...
-----------------------------------------------------------------------------------------
终于一切正常啦~ 问题既不是出在继承也不是存在着神奇的跨文件就用不了的类 问题出在addLayoutComponent方法上 百度都说用不上 我参考的里面好像也没这个啊 不知道怎么造出来的
public class CalendarPanel extends JPanel{
private static final long serialVersionUID = 1L;
private Calendar calendar;
private JPanel yearPanel = new JPanel();
private static final String DEFAULTFORMAT = "yyyy-MM-dd";
private static final String[] showTEXT = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
private static int defaultStartDAY = 1;//0 is from Sun, 1 is from Mon, 2 is from Tue...
public CalendarPanel(){
SimpleDateFormat sdf = new SimpleDateFormat(DEFAULTFORMAT);
this.setLayout(new BorderLayout());
initCalendar();
initYearPanel();
// manager.addLayoutComponent(yearPanel, BorderLayout.NORTH);
this.add(initDayListPanel(), BorderLayout.CENTER);
}
private void initCalendar(){
calendar = Calendar.getInstance();
}
private void initYearPanel(){
FlowLayout yearControl;
}
private JPanel initDayListPanel(){
JPanel dayListPanel = new JPanel();
dayListPanel.setLayout(new GridLayout(1,7,5,5));
//set weekday title
for(int i = 0, daySub = defaultStartDAY; i < 7; i++){
if(daySub > 6){
daySub = 0;
}
JLabel weekDayTitle = new JLabel(showTEXT[daySub],JLabel.CENTER);
dayListPanel.add(weekDayTitle);
daySub++;
}
return dayListPanel;
}
}