【发布时间】:2017-01-21 09:47:13
【问题描述】:
为了添加背景图像,我使用 JLabels 而不是 JPanel。
JFrame frame=new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label=new JLabel(new ImageIcon("bg.png"));
label.setLayout(new BoxLayout(label, BoxLayout.Y_AXIS));
for(int i=0;i<20;i++)
label.add(new JLabel(i.toString()));
frame.add(label);
这里的问题是只会显示适合背景图像的组件(在我的示例中只有前 10 个 JLabel)
我尝试使用 JScrollPane
JScrollPane scroll=new JScrollPane(l);
for(int i=0;i<20;i++)
label.add(new JLabel(i.toString()));
frame.add(scroll);
但变化不大,所以我尝试使用 JPanel
JPanel panel=new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
JScrollPane scroll=new JScrollPane(panel);
for(int i=0;i<20;i++)
panel.add(new JLabel(i.toString()));
label.add(scroll);
frame.add(label);
所以我让 JScrollPane 正常工作,但 JPanel 已经覆盖了背景图像
我该怎么办?
以下是将 JLabels 添加到标签的结果:
将它们添加到滚动后的结果:
在将setOpaque(false) 添加到JPanel 之后:
【问题讨论】:
-
将
JPanel的不透明设置为false。但是,为了获得更好的帮助,请尽快发布minimal reproducible example 和 ASCII 艺术/图像,说明您拥有的和想要实现的目标,这将大大改善您的帖子。由于您还没有足够的声誉,您可以为您的图片添加链接,我们可以编辑帖子并使其显示在此处 -
另外,作为一个建议,让你的变量更具描述性,
ll是什么?我必须在代码中知道它是什么,而是将它们称为label或pane/panel用于面板,s将其更改为scroll/scrollPane/ 等;它将使您和我们的代码更易于阅读和理解 -
不,它没有用
-
好吧,然后发布一个可运行的示例,图像,并在这样做时遵循我的第二条评论建议,以便我们提供更多帮助
-
这是将 JLabels 添加到标签 imgur.com/W0xMDdl 的结果,这是将它们添加到滚动的结果 imgur.com/FOEf9M4,这是我将面板不透明设置为 false imgur.com/TIlhgPS
标签: java swing jpanel jlabel jscrollpane