JPanel 的组件比自身大时,如何将 JPanel 添加到 JScrollPane?
How to Add JPanel to JScrollPane While JPanel Has Component Bigger Than Itself?
我的问题表明我是 JAVA 的新人 ;)
我正在尝试将 JPanel
添加到 JScrollPane
,但是当我添加大于 JPanel
的组件时,JScrollPane
不起作用。
我可以通过将 JScrollPane 设置为小于 JPanel
来修复它,但这不是正确的解决方案(我想稍后动态地向 JPannel
添加组件)。
scroll2.setPreferredSize(新维度(500, 500));
什么是解决方案?谢谢
public class 主要扩展 JFrame {
private JPanel finalPan2;
JScrollPane scroll2;
public Main() throws HeadlessException {
super("V4.0.3");
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
setSize(520, 540);
setLocation(0, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
setResizable(false);
setVisible(true);
finalPan2 = new JPanel(new FlowLayout(FlowLayout.CENTER));
finalPan2.setPreferredSize(new Dimension(620, 540));
JButton bb = new JButton("Big Button");
bb.setPreferredSize(new Dimension(50, 800));
finalPan2.add(bb);
scroll2 = new JScrollPane(finalPan2);
scroll2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroll2.setPreferredSize(new Dimension(500, 500));
add(scroll2, BorderLayout.CENTER);
setLocationRelativeTo(null);
}
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
// @Override
public void run() {
Main ba = new Main();
}
});
}
}
您有 JPanel
的 ScrollPane
,但是 JPanel
不会更改大小以适应 JButton
的大小,因为您已经设置了它的大小首选尺寸。如果您取出 finalPan2.setPreferredSize(new Dimension(620, 540));
,面板应该调整大小以适应按钮,并且滚动窗格应该可以工作。
我的问题表明我是 JAVA 的新人 ;)
我正在尝试将 JPanel
添加到 JScrollPane
,但是当我添加大于 JPanel
的组件时,JScrollPane
不起作用。
我可以通过将 JScrollPane 设置为小于 JPanel
来修复它,但这不是正确的解决方案(我想稍后动态地向 JPannel
添加组件)。
scroll2.setPreferredSize(新维度(500, 500));
什么是解决方案?谢谢
public class 主要扩展 JFrame {
private JPanel finalPan2;
JScrollPane scroll2;
public Main() throws HeadlessException {
super("V4.0.3");
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
setSize(520, 540);
setLocation(0, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
setResizable(false);
setVisible(true);
finalPan2 = new JPanel(new FlowLayout(FlowLayout.CENTER));
finalPan2.setPreferredSize(new Dimension(620, 540));
JButton bb = new JButton("Big Button");
bb.setPreferredSize(new Dimension(50, 800));
finalPan2.add(bb);
scroll2 = new JScrollPane(finalPan2);
scroll2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroll2.setPreferredSize(new Dimension(500, 500));
add(scroll2, BorderLayout.CENTER);
setLocationRelativeTo(null);
}
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
// @Override
public void run() {
Main ba = new Main();
}
});
}
}
您有 JPanel
的 ScrollPane
,但是 JPanel
不会更改大小以适应 JButton
的大小,因为您已经设置了它的大小首选尺寸。如果您取出 finalPan2.setPreferredSize(new Dimension(620, 540));
,面板应该调整大小以适应按钮,并且滚动窗格应该可以工作。