【问题标题】:JLayeredPane with JPanel and JLabel with Icon带有 JPanel 的 JLayeredPane 和带有图标的 JLabel
【发布时间】:2013-05-09 06:18:40
【问题描述】:

我正在尝试使用JLayeredPaneJFrame 上添加控件(JPanelJLabel)。

标签在ImageIcon 的帮助下具有背景图像,并且面板上有按钮控件。它显示带有背景图像的 jlabel

但面板控件不显示。我正在使用以下代码。

   try
  {
  JLayeredPane layers= new JLayeredPane();
  ImageIcon img1= ImageIcon("path upto image");
  JLabel l1= new JLabel("");
  l1.setIcon(img1);


  JPanel panel1   = new JPanel();

   layers.add(l1);
  layers.add(panel1);

  add(layers);
 }
catch(Exception ex){ex.printStackTrace();}

如何显示面板控件?

【问题讨论】:

  • 1) 为了尽快获得更好的帮助,请发帖 SSCCE。 2) 对代码块使用一致且符合逻辑的缩进。代码的缩进是为了帮助人们理解程序流程。
  • 在 JLayeredPane 上,项目也按层上的 z 位置排序。我建议使用 layers.add(child, layer) 而不是简单的 add 方法。有关这方面的信息,请参阅 The Documentation

标签: java swing jpanel jlayeredpane


【解决方案1】:

默认情况下,组件没有位置或大小,这意味着如果您将它们添加到没有布局管理器的容器中(如 JLayeredPane 的情况),它们将不会出现。

因为JLayeredPane 没有布局管理器,所以您必须负责为您的组件提供位置和大小信息。

尝试使用setSizesetLocation 和/或setBounds

查看How to use layered panes 中的示例了解更多详情。

【讨论】:

  • “尝试使用..” ..一个布局管理器!仅仅因为它默认没有一个,并不意味着你不能设置一个。
  • @AndrewThompson LOL...真的,上下文会很好
  • @AndrewThompson 在我的(小)心目中,JLayeredPane 非常适合拖动东西,但这只是我......
  • 它现在可以工作了,当我更改添加的顺序时,我先添加了 jpanel,然后添加了带有背景图像的 jlabel
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 2014-04-20
相关资源
最近更新 更多