我有一个 JButton
,我想扩展它以填充容纳它的 JPanel
的大小。我试过几种不同的方法,但没有成功。以下是一些尝试:
推荐的手动尺寸设置here - 按钮的大小没有改变。
panel = new JPanel(new CardLayout()); button = new JButton(); button.setPreferredSize(new Dimension(BUTTON_SIZE, BUTTON_SIZE)); panel.add(button);
尝试使用
BorderLayout
展开按钮,如 here 中提示的那样.大小没有变化。panel = new JPanel(new BorderLayout()); button = new JButton(); panel.add(button, BorderLayout.CENTER);
我可能做错了什么,所以非常感谢任何帮助。
编辑
这里是解决问题的总结。有两件事有效
- 删除 LayoutManager(在对
new JPanel
的调用中),这 according to Oracle默认为 BorderLayout。 - 将尺寸添加到接受的答案中的调用(即
new BorderLayout(0,0)
)。
最佳答案
您的第二次尝试应该有效,但这并不意味着您的整个顶级容器将由包含您的 JButton
的 JPanel
填充。当 BorderLayout
容器中没有其他组件时,中心组件将展开以填充整个容器。
http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html
If the window is enlarged, the center area gets as much of the available space as possible.
您能否发布您在运行您的应用程序时所看到的图像?下面是一个工作示例。值得注意的一件事是,一直到顶部 JFrame
的每个容器也在使用 BorderLayout
。在您的尝试中,某些上层容器可能会限制您的 JPanel
的大小,因此也会限制内部的 JButton
。
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout(0, 0));
JButton button = new JButton("I'm a button!");
panel.add(button);
frame.getContentPane().add(panel, BorderLayout.CENTER);
关于Java:展开JButton填充Container,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13792909/