java - 拥有多个带有滚动 Pane 的面板

标签 java user-interface jpanel jscrollpane

我创建了两个面板和一个主面板。每个面板都包含一个非常大的图像,我希望它们都可以滚动以查看图像的其余部分。但是当我在主面板中添加两个面板并运行它时,第一个面板太大以至于覆盖了第二个面板。我如何为两个面板实现 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/

上一篇:Java贷款表计算器

下一篇:Java Awt 和 Swing

相关文章:

java - 我怎样才能只显示最后一行?

java - VM 选项 'UseSplitVerifier' 缺少 +/- 设置

Java JFrame 根据屏幕分辨率调整大小

python - Qt 框架、PyQt5 和 AttributeError : 'MyApp' object has no attribute 'myAttribute'

java - JFrame 内的 JPanel

java - JButton 隐藏直到悬停第一次启动

java - 尝试执行 CardLayout 但运行 GUI 时不显示任何按钮

java - 如何从java执行R脚本文件

java - Guice:使用@Named 注入(inject)映射绑定(bind)

Java GUI,尝试定位单选按钮和复选框