不知何故,我没有显示滚动面板。我需要更改什么?

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”已从“帮助器”面板中删除,并且只会出现在滚动窗格中。

//pic.add(bigP,BorderLayout.CENTER);
pic.add(helper,BorderLayout.CENTER);


而且,您永远不会将滚动窗格添加到“图片”面板。代码应为:

//pic.add(bigP,BorderLayout.CENTER);
//pic.add(helper,BorderLayout.CENTER);
pic.add(sc, BorderLayout.CENTER);


所以现在您应该拥有一个看起来像这样的结构:

- pic
    - sc
        - bigP


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

10-05 23:09