我有一个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容器中没有其他组件,则中心组件将展开以填充整个容器.
原文链接:https://www.f2er.com/java/438233.htmlhttp://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);