继承JPanel的类不显示

继承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;
	}
}


 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值