首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对齐JButton

对齐JButton
EN

Stack Overflow用户
提问于 2016-04-11 23:22:26
回答 2查看 54关注 0票数 0

我必须将我的程序中的一个按钮对齐到正中间,当前的代码运行它,但显示的按钮和程序一样大,我想要一个特定大小的中心按钮,这是我尝试过的

代码语言:javascript
复制
/**
 * 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();

    }

}
EN

回答 2

Stack Overflow用户

发布于 2016-04-12 00:32:08

代码语言:javascript
复制
JPanel p = new JPanel(new GridBagLayout());

您创建了一个带有GridBagLayout的面板,它是一个很好的布局管理器,可以用来使组件居中。

代码语言:javascript
复制
p.add(b1);

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

代码应该是:

代码语言:javascript
复制
p.add(b1, c);

//直到我调整程序大小时按钮才会出现?

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

你能指出哪个部分是实例初始化器块吗,我还以为我用的是构造函数

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

票数 3
EN

Stack Overflow用户

发布于 2016-04-11 23:28:21

它是定义组件如何布局、位置和大小的LayoutManager。例如,您正在使用的GridLayout将可用空间划分为相等的网格域,并使组件完全填充此空间,这就是为什么您的按钮与应用程序一样大的原因。有关LayoutManagers的更多信息,请查看此处:https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36552836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档