我必须在我的项目中使用JScrollPane
,但它无效。
我在我的主要JPanel中使用JSCrollPane
粘贴了我的代码。
frame = new JFrame();
frame.setBounds(100, 100, 1179, 733);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane_1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane_1.setBounds(0, 0, 1163, 694);
frame.getContentPane().add(scrollPane_1);
JPanel panel = new JPanel();
scrollPane_1.setViewportView(panel);
panel.setLayout(null);
答案 0 :(得分:2)
将布局设置为Null意味着您需要手动处理展示位置 - >指定像素位置并处理容器的大小。
布局管理器会为您处理此展示位置。经理根据其内容计算其首选大小。 ScrollPane使用布局管理器中的计算大小。
这意味着您应该使用布局管理器,将组件放在其中。其余的应该自动工作。
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(500, 500);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(30, 15));
for (int row = 0; row < 30; row++) {
for (int col = 0; col < 15; col++) {
panel.add(new Button("Button" + row + "/" + col));
}
}
frame.getContentPane().add(new JScrollPane(panel));
frame.setVisible(true);
}
答案 1 :(得分:0)
我不确定您使用的是哪种布局,但您需要将面板布局设置为类似
panel.setLayout(new FormLayout(
"default:grow",
"fill:default:grow"));