Java:展开JButton以填充Container

前端之家收集整理的这篇文章主要介绍了Java:展开JButton以填充Container前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个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(在对新JPanel的调用中),其中according to Oracle默认为BorderLayout.
>在接受的答案中添加维度(即新的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相关文章