use*_*577 5 java swing jpanel jbutton
我有一个JButton我想扩展以填补JPanel持有它的大小.我尝试过几种不同的方式,没有运气.以下是一些尝试:
这里推荐的手动尺寸设置- 按钮尺寸没有变化.
panel = new JPanel(new CardLayout());
button = new JButton();
button.setPreferredSize(new Dimension(BUTTON_SIZE, BUTTON_SIZE));
panel.add(button);
Run Code Online (Sandbox Code Playgroud)试图用一个BorderLayout如在暗示扩大按钮在这里.尺寸没有变化.
panel = new JPanel(new BorderLayout());
button = new JButton();
panel.add(button, BorderLayout.CENTER);
Run Code Online (Sandbox Code Playgroud)我可能做错了什么,所以非常感谢任何帮助.
编辑
以下是解决问题的摘要.有两件事有效
new JPanel),根据Oracle默认为BorderLayout.new BorderLayout(0,0)).您的第二次尝试应该有效,但这并不意味着您的整个顶级容器将由JPanel包含您的JButton.当BorderLayout容器中没有其他组件时,中心组件将展开以填充整个容器.
http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html
如果窗口被放大,则中心区域将获得尽可能多的可用空间.
您可以发布运行应用时所看到的图像吗?以下是一个工作示例.值得注意的是,每个容器一直到顶部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);
Run Code Online (Sandbox Code Playgroud)
