Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对齐按钮_Java_Swing_Jframe_Jbutton - Fatal编程技术网

Java 对齐按钮

Java 对齐按钮,java,swing,jframe,jbutton,Java,Swing,Jframe,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.setDefaultClose

我必须将程序上的一个按钮对准中间,我运行的当前代码,但显示的按钮与程序一样大,我想要一个特定大小的中间按钮,下面是我尝试的

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

    }

}

正是
LayoutManager
定义了组件的布局方式、位置和大小<代码>网格布局您正在使用的e。G将可用空间划分为相等的网格字段,并使组件完全填满此空间,这就是为什么按钮与应用程序一样大的原因。有关LayoutManager的更多信息,请参见此处:


顺便说一句,您的代码是不可编译的:
newjbutton(“he”),JButton.ALIGN_CENTER)

LayoutManager
定义了组件的布局方式、位置和大小<代码>网格布局您正在使用的e。G将可用空间划分为相等的网格字段,并使组件完全填满此空间,这就是为什么按钮与应用程序一样大的原因。有关LayoutManager的更多信息,请参见此处:

顺便说一句,您的代码不可编译:
newjbutton(“he”),JButton.ALIGN\u CENTER)

创建一个带有GridBagLayout的面板,GridBagLayout是用于使构件居中的良好布局管理器

p.add(b1);
但是,您可以在不使用任何约束的情况下将按钮添加到面板中

代码应为:

p.add(b1, c);
//按钮在我调整程序大小之前不会出现

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

另外,你能指出哪一部分是实例初始值设定项块吗?我以为我在使用构造函数

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

创建一个带有GridBagLayout的面板,GridBagLayout是用于使构件居中的良好布局管理器

p.add(b1);
但是,您可以在不使用任何约束的情况下将按钮添加到面板中

代码应为:

p.add(b1, c);
//按钮在我调整程序大小之前不会出现

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

另外,你能指出哪一部分是实例初始值设定项块吗?我以为我在使用构造函数


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

为什么在设置布局管理器之前要将按钮添加到窗口?为什么要使用实例初始值设定项块而不是构造函数?使用borderLayout并将其放置在中间。@dijam:这将用按钮填充几乎整个GUI。不好的。Timothy,要获得更详细的帮助,请发布一个链接到一张图片,显示你正在努力实现的目标。同样,链接应该指向图像,而不是网页,然后我们可以帮助您将实际图像加载到问题中。@HovercraftFullOfEels我刚刚添加了新代码和当前输出,尽管仍然存在问题。你能指出哪个部分是实例初始化程序块吗,我原以为我使用的是构造函数,但我对创建自己的shell以允许可视化程序运行还不熟悉。为什么在设置布局管理器之前要将按钮添加到窗口?为什么要使用实例初始值设定项块而不是构造函数?使用borderLayout并将其放置在中心。@dijam:这将几乎填满整个GUI按钮不好的。Timothy,要获得更详细的帮助,请发布一个链接到一张图片,显示你正在努力实现的目标。同样,链接应该指向图像,而不是网页,然后我们可以帮助您将实际图像加载到问题中。@HovercraftFullOfEels我刚刚添加了新代码和当前输出,尽管仍然存在问题。另外,您能否指出哪一部分是实例初始值设定项块,我原以为我在使用构造函数,但我不熟悉创建自己的shell以允许可视化程序运行。