在这个网站上,我找到了一个很好的例子,如何应用JScrollPane的JButton矩阵。代码如下所示。
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
int x = 10;
int y = 5;
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(x, y));
for (int i = 0; i < x * y; i++) {
JButton button = new JButton(String.valueOf(i));
button.setPreferredSize(new Dimension(100, 20));
panel.add(button);
}
JPanel container = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
container.add(panel);
JScrollPane scrollPane = new JScrollPane(container);
f.getContentPane().add(scrollPane);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
如果我想让我的按钮具有任意大小和任意位置,并且具有相同的滚动可能性,我该如何修改代码呢?非常感谢您的提示或建议。
我已经修改了上面的代码,试图按照图片所示的方式塑造按钮,但setBounds设置似乎被忽略了。
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
int x = 10;
int y = 5;
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(x, y));
JButton button1 = new JButton("JButton1");
JButton button2 = new JButton("JButton2");
JButton button3 = new JButton("JButton3");
JButton button4 = new JButton("JButton4");
button1.setBounds(0, 0, 100, 50);
button2.setBounds(100, 25, 100, 25);
button3.setBounds(0, 50, 80, 200);
button4.setBounds(80, 50, 250, 60);
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(button4);
JPanel container = new JPanel(new
FlowLayout(FlowLayout.CENTER, 0, 0));
container.add(panel);
JScrollPane scrollPane = new JScrollPane(container);
f.getContentPane().add(scrollPane);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
错误的结果:
我还需要做哪些更改才能使按钮位置符合预期?
1条答案
按热度按时间pcww981p1#
这和另一个问题没什么不同:您将包含所有JButton的JPanel放入JScrollPane的视区中。就是这样。关键是包含按钮的JPanel将使用什么布局管理器。具体细节很重要,因为这些面板和布局将确定包含的jpanel的首选大小,该jpanel将是滚动窗格视区的视图。
你的问题的细节将取决于你放置的不规则按钮的确切细节,一些你还没有告诉我们的事情。