繁体   English   中英

对齐JButton

[英]Aligning JButton

这是我非常想要的输出 我必须将程序上的按钮对齐到确切的中间位置,当前代码已运行它,但显示的按钮与程序一样大,我想要一个特定大小的中间按钮,这是我尝试过的

/**
 * 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();

    }

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

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

p.add(b1);

但是随后您可以在不使用任何约束的情况下将按钮添加到面板。

代码应为:

p.add(b1, c);

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

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

还可以指出哪一部分是实例初始化程序块,我以为我在使用构造函数

请参阅Swing教程“ 如何制作框架”中FrameDemo示例, 获取一种更好的结构化代码的方式,以便您遵循Swing约定。 从工作代码开始,进行更改以添加包含按钮的面板,而不是使用JLabel。 注意,您不再需要使用getContentPane()方法,您只需将面板直接添加到框架中即可。

LayoutManager定义如何在何处以及如何LayoutManager组件。 您正在使用的GridLayout例如将可用空间划分为相等的网格字段,并使组件完全填充该空间,这就是为什么按钮与应用程序一样大的原因。 有关LayoutManager的更多信息,请参见此处: https : //docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

顺便说一句。 您的代码不可编译: new JButton("he"),JButton.ALIGN_CENTER)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM