当前位置: 首页 > 面试题库 >

JScrollPane中的Java JPanel?

武琛
2023-03-14
问题内容

我有一个JFrame,在这个JFrame中,我有一个绘制的JPanel,此Panel可以是任何大小,因此我将其放在JScrollpane中,以便当面板大于窗口屏幕大小时可以滚动。

不幸的是,它没有按我预期的那样工作:

  1. 使JFrame窗口小于JPanel大小不会显示滚动条

  2. 现在,JScrollPane的大小似乎已锁定为我添加到其中的JPanel的大小,就像以前一样,它的大小已调整为JFrame窗口的边界(它仍然可以这样做,但现在只能垂直吗?!)

  3. 无论我为首选大小设置了什么,JPanel似乎都假定JScrollpane的大小

我敢肯定,如果有人可以指出我最感谢的话,我会做一些愚蠢的事情!

JPanel _ImageCanvas = new JPanel(); // 'Canvas' to draw on
JScrollPane _ScrollPane = new JScrollPane();

// set size of 'canvas'
_ImageCanvas.setMinimumSize(new Dimension(100,100));

// Scroll pane smaller then the size of the canvas so we should get scroll bars right?
_ScrollPane.setMinimumSize(new Dimension(50,50));

// Add a border to 'canvas'
_ImageCanvas.setBorder(BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

_ScrollPane.setViewportView(JPanel);

非常感谢

大卫


问题答案:

setPreferredSize()是技巧,JScrollPane将忽略组件上的setMinimumSize()甚至setSize()。这是一个使用红色边框的工作示例。

import java.awt.*;

import javax.swing.*;

public class Scroller extends JFrame {

    public Scroller() throws HeadlessException {
        final JPanel panel = new JPanel();
        panel.setBorder(BorderFactory.createLineBorder(Color.red));
        panel.setPreferredSize(new Dimension(800, 600));

        final JScrollPane scroll = new JScrollPane(panel);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        add(scroll, BorderLayout.CENTER);
        setSize(300, 300);
        setVisible(true);
    }

    public static void main(final String[] args) throws Exception {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Scroller().setVisible(true);
            }
        });
    }
}


 类似资料:
  • 问题内容: 我有一个,其内容窗格为。为此,我添加了较小的,并且如预期的那样,如果添加太多,则会出现一个垂直滚动条。 问题是,我的小s包含一个过了。我想使用鼠标滚轮 仅 用于滚动面板外,而不是较小的滚动窗格。我已经设定到为小滚动面板,但如果我朝任意方向滚动,以及鼠标越过,滚动不工作了。 有什么建议吗? 问题答案: 您可以尝试将滚轮事件从内部滚动窗格转发到其父级。

  • 问题内容: 我想知道你们是否有问题,例如您是否有一些自己的东西,并且您的面板中使用了很多s和他们自己的s,是否存在上/下滚动面板的问题? 我的意思是,当你的鼠标是一些表的口,然后的是听上滚动,所以,当我得到很多的I我能够滚动只在面板的几个地方,它是如此讨厌… 当滚动未显示时,是否有一些函数会将我的滚动事件发送给父级?我的意思是我想在某些不需要使用滚动条的情况下禁用它(当它被隐藏时,因为记录太少了)

  • jScrollPane这个jQuery插件可以让你通过简单的CSS设置就能够替换所有分块元素在浏览器中默认的垂直滚动条样式。

  • 我使用子JPanel构造JScrollPane,然后尝试将JScrollPane添加到父JPanel中,希望有一个可滚动的自定义JPanel。 我有一个大的细白线前面的所有我的组件,他们是没有滚动。有什么想法吗?

  • 主要内容:1 Java JScrollPane的介绍,2 Java JScrollPane的构造方法,3 Java JScrollPane的方法,4 Java JScrollPane的案例1 Java JScrollPane的介绍 JscrollPane用于制作组件的可滚动视图。当屏幕大小受到限制时,我们使用滚动窗格来显示大型组件或大小可以动态更改的组件。 2 Java JScrollPane的构造方法 构造方法 描述 JScrollPane() 创建一个滚动窗格。Component参数(如果存

  • 我目前正在尝试使用Swift中的GridBagLayout构建GUI。 在尝试为我正在处理的项目制作GUI时,遇到了一个问题: 创建物品列表时,面板超过了我的屏幕高度,因此我将框架的首选大小设置为900像素。 但是,该列表的高度超过900像素。因此,我尝试将一个JScrollPane添加到包含列表的面板中。只是没有一个。 我的框架架构是这样的:框架f- 我将ScrollPane应用于这些对象中的任