在JScrollPane中调整JPanel的大小-从不小于视口



我创建了一个JPanel和JScrollPane,如下所示:

JPanel panel = new JPanel();
panel.setPreferredSize(5000, 5000);
JScrollPane scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPanel.getViewport().setBackground(Color.GRAY); //panel is white

我将使用事件处理程序来动态调整面板的大小。问题是,有时面板比视口小。我会这样设置面板的大小:

panel.setPreferredSize(10, 10); //Just an example

但是面板永远不会小于视口。我试过使用

panel.setSize(10, 10);

我看到了一个灰色的闪烁(视口的背景显示出来),这表明面板的大小是我想要的,但后来增加到了视口的大小。我该怎么阻止?

要控制JViewport内部视图的大小,请让它实现Scrollable接口。如果没有,它总是被强制为视口的大小。

最新更新