Java:展开JButton填充Container

标签 java swing jpanel jbutton

我有一个 JButton,我想扩展它以填充容纳它的 JPanel 的大小。我试过几种不同的方法,但没有成功。以下是一些尝试:

  1. 推荐的手动尺寸设置here - 按钮的大小没有改变。

    panel  = new JPanel(new CardLayout());
    button = new JButton();
    button.setPreferredSize(new Dimension(BUTTON_SIZE, BUTTON_SIZE)); 
    panel.add(button);
    
  2. 尝试使用 BorderLayout 展开按钮,如 here 中提示的那样.大小没有变化。

    panel  = new JPanel(new BorderLayout());
    button = new JButton();
    panel.add(button, BorderLayout.CENTER);
    

我可能做错了什么,所以非常感谢任何帮助。

编辑

这里是解决问题的总结。有两件事有效

  1. 删除 LayoutManager(在对 new JPanel 的调用中),这 according to Oracle默认为 BorderLayout。
  2. 将尺寸添加到接受的答案中的调用(即 new BorderLayout(0,0))。

最佳答案

您的第二次尝试应该有效,但这并不意味着您的整个顶级容器将由包含您的 JButtonJPanel 填充。当 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);

enter image description here

关于Java:展开JButton填充Container,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13792909/

相关文章:

java - 使用iText(signdeferred)创建PDF数字签名,验证签名时出现invalid signature问题

java - RCP - 如何用另一个图像装饰图像

java - 如何在 JLabel 中插入 JPanel?

java - 我已经创建了一个基本的 GUI,但按钮不会与文本字段交互

java - java中的注释帮助

java - 为什么使用 nextInt() 的这段代码会永远循环?

java - 在 Netbeans 调色板中分解 Java Swing 类

java - JTable 中的 JComboBox 不会在项目更改时立即更新表

java - 正确地在图像上绘图

java - 并排设置两个Jpanel,窗口较小时没有变化