这是我在论坛发的一个帖子,在一哥们儿提醒下解决了,拿出来分享一下
//这是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!问题解决