
我必须将我的程序中的一个按钮对齐到正中间,当前的代码运行它,但显示的按钮和程序一样大,我想要一个特定大小的中心按钮,这是我尝试过的
/**
* 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();
}
}发布于 2016-04-12 00:32:08
JPanel p = new JPanel(new GridBagLayout());您创建了一个带有GridBagLayout的面板,它是一个很好的布局管理器,可以用来使组件居中。
p.add(b1);但是,您可以在不使用任何约束的情况下将按钮添加到面板。
代码应该是:
p.add(b1, c);//直到我调整程序大小时按钮才会出现?
在使框架可见之前,应将所有组件添加到框架中。setVisible(...)语句应该是构造函数的最后一条语句。
你能指出哪个部分是实例初始化器块吗,我还以为我用的是构造函数
请参阅How to Make Frames上的Swing教程中的FrameDemo示例,以获得更好的代码结构方法,以便您遵循Swing约定。从工作代码开始,进行更改以添加包含按钮的面板,而不是使用JLabel。注意:您不再需要使用getContentPane()方法,只需将面板直接添加到框架即可。
发布于 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)
https://stackoverflow.com/questions/36552836
复制相似问题