我有一个JButton
,我想扩展它来填充持有它的JPanel
的大小。我尝试过几种不同的方法,但是没有运气。这里有一些尝试:
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);
我可能做错了某些事情,因此非常感谢您的帮助。
编辑
这是解决问题的摘要。有两件事奏效
new JPanel
的调用中),according to 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);
关于Java:展开JButton以填充容器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13792909/