swing:为什么一个类里调用另一个类的panel不显示

这是我在论坛发的一个帖子,在一哥们儿提醒下解决了,拿出来分享一下

 

 

 //这是index类,要在这个类里调用另外一个类的panel
public class IndexFrame extends JFrame {

private static final long serialVersionUID = 1L;

protected ImagePanel backgroundPanel;
protected NavigationPanel navigationPanel;

public IndexFrame() {
init();
}

private void init() {
JFrame frame = new JFrame();
backgroundPanel = new ImagePanel(new ImageIcon(
"images/backgroundImg.png").getImage());
backgroundPanel.setOpaque(false);
navigationPanel = new NavigationPanel();
backgroundPanel.add(navigationPanel);
frame.getContentPane().add(backgroundPanel);
frame.pack();
frame.setVisible(true);
frame.setLocation(200, 80);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new IndexFrame();
}

}



//这是被调用的类,此类里构造一个panel
public class NavigationPanel extends JPanel {
protected static ImagePanel navigationPanel;
protected JPanel navButtonPanel;

public NavigationPanel() {
init();
}

private void init() {
navigationPanel = new ImagePanel(new ImageIcon(
"images/navigationBgr2.png").getImage());
navigationPanel.setOpaque(false);
navigationPanel.setOpaque(false);
navigationPanel.setVisible(true);
System.out.println("navigationPanel 初始化完毕");
}
public static void main(String[] args) {
new NavigationPanel();
JFrame frame = new JFrame();
frame.add(navigationPanel);
frame.setSize(600, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

这样调用,为什么不显示?
单独运行navigationPanel就能显示

 

 

解决办法:

为NavigationPanel加一个含参构造方法
将上面高亮的那一句改成下面这句

navigationPanel = new NavigationPanel(backgroundPanel);

OK!问题解决

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值