我在Java中遇到了 scrollPane 的问题。
我正在使用 Java 编程GUI,我已经使用带滚动条的JPanel实现了一个Panel。
为了简化我的想法以便更好地理解,Panel根据用户输入的数字显示了许多Jlabels。
因此,每次用户输入不同的值时,面板的宽度和高度都会动态更改。
JPanel inP=new JPanel();
inP.setLayout(null);
inP.setPreferredSize(new Dimension(1000, 1000));
scroll=new JScrollPane(inP,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scroll.setBounds(10, 20, 830, 440);
lowP.add(scroll);
正如您所看到的,我创建了Jpanel,其首选大小为常量(为简单起见,尽管它是动态的)。
然而,问题在于,当我运行代码时,会出现垂直滚动条,但是当我向下滚动时,Jlabel的其余部分不会出现(它就像图中的切割一样)。
奇怪的是,当我向上滚动时,图表会返回其初始状态并忽略我刚应用的更新。
同样奇怪的是,水平滚动条工作正常,并从右侧显示图表的左侧。
以下是一些显示我问题的照片:
以下是我向下滚动时的外观图像:
答案 0 :(得分:2)
但是当我向下滚动时,Jlabel的其余部分不会出现(它就像图中的一个切口)。
布局管理器的工作是确定添加到面板的组件的首选大小。滚动仅在正确计算此值时有效。不要使用null布局。让布局管理器完成它的工作。
因此,每次用户输入不同的值时,面板的宽度和高度都会动态更改。
请勿使用setPreferredSize(...)
!!!
在添加组件时,布局管理器将动态确定首选大小。您的基本代码应该是:
panel.add(...);
panel.revalidate();
panel.repaint();