为了添加背景图像,我使用JLabels而不是JPanel。使用JLabel修复JScrollPane
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);
所以我得到了JScrollPa ne正常工作,但JPanel已经覆盖了背景图片
我该怎么办?
这里的结果添加的JLabel标注:将其添加到滚动后
结果:
并添加setOpaque(false)
到JPanel
后:
设置'JPanel'不透明为false。但是,为了更快地获得更好的帮助,请发布[mcve]和ASCII艺术/图片,了解您拥有的内容以及想要实现的目标,这将大大改善您的文章。由于您还没有足够的声望,您可以添加一个链接到您的图片,我们可以编辑帖子,并在这里显示 – Frakcool
此外,作为旁边的建议,让你的变量更具描述性,'l'什么是'l '?我不得不在代码中知道它是什么,而是将它们称为面板的'label'或'pane' /'panel','s'将它改为'scroll' /'scrollPane'/etc;它会使代码更容易阅读和理解你和我们 – Frakcool
没有它没有工作 –