调整JButton

时间:2016-04-11 15:22:26

标签: java swing jframe jbutton

This is the output I want pretty much我必须将程序上的一个按钮对齐到正确的中间位置,我运行的当前代码却显示了与程序一样大的按钮,我想要一个特定大小的中心按钮,这是我试过的

/**
 * Created by Timk9 on 11/04/2016.
 */
import javax.swing.*;
import java.awt.*;
public class Test extends JFrame {

{
    JFrame window = new JFrame("Test");
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setResizable(true);
    window.setSize(600, 600);
    window.setVisible(true);
    window.setLocationRelativeTo(null);

    JPanel p = new JPanel(new GridBagLayout());
//Button does not appear until I resize the program?
    JButton b1 = new JButton("Click here");
GridBagConstraints c = new GridBagConstraints();

    p.add(b1);
    window.add(p);

        }

public static void main(String[] args) {
new Test();

    }

}

2 个答案:

答案 0 :(得分:3)

JPanel p = new JPanel(new GridBagLayout());

使用GridBagLayout创建一个面板,这是一个很好的布局管理器,用于使组件居中。

p.add(b1);

然后你将按钮添加到面板而不使用任何约束。

代码应为:

p.add(b1, c);
  

//在我调整程序大小之前,按钮才会出现?

在框架可见之前,应将所有组件添加到框架中。 setVisible(...)语句应该是构造函数的最后一个语句。

  

你也可以指出哪个部分是实例初始化块,我以为我正在使用构造函数

请参阅How to Make Frames上Swing教程中的FrameDemo示例,了解更好的方法来构建代码,以便遵循Swing约定。从工作代码开始并进行更改以添加包含按钮的面板,而不是使用JLabel。请注意,您不再需要使用getContentPane()方法,只需将面板直接添加到框架中即可。

答案 1 :(得分:1)

LayoutManager定义了组件的布局位置和大小。您正在使用的GridLayout e。 G。在相等的网格字段中划分可用空间并使组件完全填充此空间,这就是您的按钮与应用程序一样大的原因。有关LayoutManagers的更多信息,请参阅此处:https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

顺便说一下。您的代码无法编译:{{1​​}}