我创建了两个面板和一个主面板。每个面板都包含一个非常大的图像,我希望它们都可以滚动以查看图像的其余部分。但是当我在主面板中添加两个面板并运行它时,第一个面板太大以至于覆盖了第二个面板。我如何为两个面板实现 ScrollPane?
import java.awt.BorderLayout;
import javax.swing.*;
public class BoardFrame extends JFrame {
JPanel mainPanel = new JPanel(new BorderLayout());
JLabel jLabel = new JLabel();
JPanel jPanelNorth = new JPanel();
JScrollPane scrollPane = new JScrollPane();
JLabel jLabel2 = new JLabel();
JPanel jPanelSouth = new JPanel();
JScrollPane scrollPane2 = new JScrollPane();
public BoardFrame() {
jLabel.setIcon(new ImageIcon("an image here"));
jPanelNorth.add(jLabel);
jLabel2.setIcon(new ImageIcon("an image here"));
jPanelSouth.add(jLabel2);
mainPanel.add(jPanelNorth, BorderLayout.NORTH);
mainPanel.add(jPanelSouth, BorderLayout.SOUTH);
add(mainPanel);
//where would I use this?
//scrollPane.setViewportView();
}
}
最佳答案
Each panel contains a very large image>
//JPanel mainPanel = new JPanel(new BorderLayout());
JPanel mainPanel = new JPanel(new GridLayout(0, 1));
您可能需要使用 GridLayout,以便每个滚动 Pane 占据框架的一半,以便尽可能多地显示每个图像。
//JScrollPane scrollPane = new JScrollPane();
JScrollPane scrollPane2 = new JScrollPane(jPanelNorth);
使用滚动 Pane 的最简单方法是使用您想要显示的组件创建滚动 Pane ,滚动 Pane 将为您将组件添加到视口(viewport)。
//mainPanel.add(jPanelNorth, BorderLayout.NORTH);
mainPanel.add(scrollPane); // don't need the constraint when using GridLayout.
然后将滚动 Pane 添加到主面板,因为滚动 Pane 包含带有图像的面板。
关于java - 拥有多个带有滚动 Pane 的面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32982598/