2

我一直在尝试对齐 JButton,并且一直在谷歌搜索一些东西,但似乎没有任何效果。我发现的所有代码都不会移动 JButton。我想对齐 JButton,使它们看起来像计算器的脸。这是我的代码:

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class CalculatorUI extends JFrame
{
    //Variables.
    private JTextField text1;
    private JButton button1;
    private JButton button2;
    private JButton button3;
    private JButton button4;
    private JButton button5;
    private JButton button6;
    private JButton button7;
    private JButton button8;
    private JButton button9;
    private JButton button0;
    private JPanel pane;

    public CalculatorUI()
    {
        super ("Calculator");
        setLayout(new FlowLayout());
        text1 = new JTextField(20);
        text1.setEditable(false);
        add(text1);
        button1 = new JButton("1");
        button1.setAlignmentX(LEFT_ALIGNMENT);
        add(button1);
        button2 = new JButton("2");
        add(button2);
        button3 = new JButton("3");
        add(button3);
        button4 = new JButton("4");
        add(button4);
        button5 = new JButton("5");
        add(button5);
        button6 = new JButton("6");
        add(button6);
        button7 = new JButton("7");
        add(button7);
        button8 = new JButton("8");
        add(button8);
        button9 = new JButton("9");
        add(button9);
        button0 = new JButton("0");
        add(button0);



        theHandler handler = new theHandler();
        text1.addActionListener(handler);
        button1.addActionListener(handler);
        button2.addActionListener(handler);
        button3.addActionListener(handler);
        button4.addActionListener(handler);
        button5.addActionListener(handler);
        button6.addActionListener(handler);
        button7.addActionListener(handler);
        button8.addActionListener(handler);
        button9.addActionListener(handler);
        button0.addActionListener(handler);

    }
    private class theHandler implements ActionListener
    {
    public void actionPerformed(ActionEvent event)
    {
        String string = "";


        if(event.getSource() == text1)
        {
            string = String.format("Field1: %s", event.getActionCommand());
        }
        else if(event.getSource() == button1)
        {
            string = String.format("Field2: %s", event.getActionCommand());
        }
        else if(event.getSource() == button2)
        {
            string = String.format("Field3: %s", event.getActionCommand());
        }
        else if(event.getSource() == button3)
        {
            string = String.format("Pasword Field: %s", event.getActionCommand());
        }

        JOptionPane.showMessageDialog(null, string);
    }
    }


}
4

2 回答 2

4

由于 Marvo 给出了具体的建议,我将与他有点矛盾,并告诉您在您更熟悉更简单的布局管理器之前避免使用 GridBagLayout。例如,对于 JButton 网格,使用 GridLayout。如果您需要其他组件,请考虑将使用 GridLayout 的 JPanel 放置在另一个使用不同布局的 JPanel 中,例如 BorderLayout ——您可以使用简单布局嵌套 JPanel 以实现复杂的 GUI。本教程将再次向您展示方法。

于 2012-05-07T22:42:57.450 回答
4

您需要找到合适的布局,而 FlowLayout 可能不是要走的路。

对于这种事情,我对 GridBayLayout 很幸运。

http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html

但我最终也为我遇到的一项独特任务编写了自己的布局管理器。不是特别难。

事实上,如果您需要的只是网格中的按钮,那么简单的 GridLayout 就可以工作。也会更容易。

于 2012-05-07T22:40:02.613 回答