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以允许可视化程序运行。