不知何故,我没有显示滚动面板。我需要更改什么?
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
如果您使用更具描述性的名称,这样每个人都知道这些变量是什么,这也将有所帮助。