我有一个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);
    

  • 我可能做错了某些事情,因此非常感谢您的帮助。

    编辑

    这是解决问题的摘要。有两件事奏效
  • 删除Layoutt(在new JPanel的调用中),according to Oracle默认为BorderLayout。
  • 按照接受的答案(即new BorderLayout(0,0)),在通话中添加维度。
  • 最佳答案

    您的第二次尝试应该可以正常工作,但这并不意味着整个顶层容器都将由包含JPanelJButton填充。当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/

    10-11 02:42
    查看更多