在Java中的JLabel上使用JScrollPane

在Java中的JLabel上使用JScrollPane,java,jpanel,jscrollpane,imageicon,scrollpane,Java,Jpanel,Jscrollpane,Imageicon,Scrollpane,不知怎的,我不想让滚动窗格出现。我需要改变什么 bigP = new JLabel(); setLayout(new BorderLayout()); JPanel helper = new JPanel(new FlowLayout()); helper.add(bigP); helper.setPreferredSize(new Dimension(500,600)); helper.add(new JScrollPane(bigP, JScrollPane.VERTICAL_SCROLL

不知怎的,我不想让滚动窗格出现。我需要改变什么

bigP = new JLabel();
setLayout(new BorderLayout());

JPanel helper = new JPanel(new FlowLayout());
helper.add(bigP);
helper.setPreferredSize(new Dimension(500,600));
helper.add(new JScrollPane(bigP, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 
                             JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));

picPane = new JPanel(new BorderLayout());
picPane.add(helper,BorderLayout.CENTER);
picPane.setMaximumSize(new Dimension(500, 600));
picPane.setVisible(true);

add(picPane, BorderLayout.CENTER);
选择图像后,该行称为:

bigP.setIcon(img);
我发现我肯定需要助手面板,因为BorderLayout只需要一个组件(据我所知)。 不幸的是,我的滚动窗格根本不会显示,尽管图片显示了

helper.setPreferredSize(new Dimension(500,600));
不要硬编码首选尺寸。配电盘将根据添加到配电盘的部件确定其自身的首选尺寸

JPanel helper = new JPanel(new FlowLayout());
helper.add(bigP);
sc = new JScrollPane(bigP,JScrollPane
此外,组件只能有一个父级。在上面的代码中,您试图将“bigP”添加到“helper”中。但在下一个语句中,您将其添加到滚动窗格中,因此“bigP”将从“helper”面板中删除,并且只显示在滚动窗格中

//pic.add(bigP,BorderLayout.CENTER);
pic.add(helper,BorderLayout.CENTER);
此外,您从未将滚动窗格添加到“pic”面板。代码应为:

//pic.add(bigP,BorderLayout.CENTER);
//pic.add(helper,BorderLayout.CENTER);
pic.add(sc, BorderLayout.CENTER);
因此,现在您应该有一个如下的结构:

- pic
    - sc
        - bigP

如果您使用更具描述性的名称,这样每个人都知道这些变量是什么,这也会有所帮助。

非常感谢!似乎我误解了滚动窗格的概念。现在一切正常!