如何对齐按钮

时间:2014-06-07 11:05:01

标签: java swing layout-manager

按钮水平放置,一个接一个地帮助我,如何让它们垂直进入屏幕。我尝试添加SwingConstants.xxxx然后item.SwingConstants.xxx得到错误水平对齐。任何帮助赞赏。 (想要坚持这种风格的程序)

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

@SuppressWarnings("serial")
public class Class_GUI_4 extends JFrame {


    private JTextField tf; // textfield
    private JCheckBox b1; // button 1
    private JCheckBox b2; // button2

    public Class_GUI_4() {
        super("TITLE");
        setLayout(new FlowLayout());

        tf = new JTextField("A testing Sentence", 20);
        tf.setFont(new Font("Serif", Font.PLAIN, 14));
        add(tf);

        b1 = new JCheckBox("Bold");
        b2 = new JCheckBox("Italic");
        add(b1);
        add(b2);

        thehandler handler = new thehandler();
        b1.addItemListener(handler);
        b2.addItemListener(handler);
    }

    private class thehandler implements ItemListener {

        @Override
        public void itemStateChanged(ItemEvent event) {
            Font font = null;
            if (b1.isSelected() && b2.isSelected())
                font = new Font("Serif", Font.BOLD + Font.ITALIC, 14);
            else if (b1.isSelected())
                font = new Font("Serif", Font.BOLD, 14);
            else if (b2.isSelected())
                font = new Font("Serif", Font.ITALIC, 14);
            else
                font = new Font("Serif", Font.PLAIN, 14);
            tf.setFont(font);
        }

    }

    public static void main(String[] args) {
        Class_GUI_4 gui = new Class_GUI_4();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gui.setSize(200, 350);
        gui.setVisible(true);

    }

}

3 个答案:

答案 0 :(得分:1)

  

如何让它们垂直进入屏幕?

尝试使用BoxLayout

setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS));
在这种情况下,

而不是FlowLayout在方向流中排列组件,就像段落中的文本行一样。

setLayout(new FlowLayout());

值得一读How to Use BoxLayout

enter image description here


在这种情况下, 使用GridLayout添加相同大小的组件,如下所示:

enter image description here


相反,您可以尝试使用GridBagLayout。详细了解How to Use GridBagLayout

示例代码:(根据您的要求以百分比更改高度)

setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
gc.fill = GridBagConstraints.BOTH;

//Set the margin between components top, left, bottom, right
//gc.insets=new Insets(5, 5, 5, 5);

tf = new JTextField("A testing Sentence", 20);
tf.setFont(new Font("Serif", Font.PLAIN, 14));

gc.gridx = 0; // 1st row
gc.gridy = 0; // 1st column
gc.weighty = 0.9; // 90%
add(tf, gc);

b1 = new JCheckBox("Bold");
b2 = new JCheckBox("Italic");
gc.gridy = 1; // 2nd column
gc.weighty = 0.05;// 5%
add(b1, gc);

gc.gridy = 2; // 3rd column
gc.weighty = 0.05;// 5%
add(b2, gc);

enter image description here

答案 1 :(得分:0)

您必须使用Layout Manager格式化UI组件,您可以在布局之间进行选择,以帮助您制作Grid LayoutBox Layout的垂直对齐。

答案 2 :(得分:0)

这是因为您使用的布局管理器是FlowLayout()。

    setLayout(new FlowLayout());

使用GridLayout管理器代替代码:

    setLayout(new GridLayout(1,3)