如何安排 Java GUI 按钮?

我需要按特定顺序排列我的按钮,但无论我做什么修改,它只会改变按钮的大小而不是位置。对不起,如果这是一个简单的问题,这是我的第一个 Java 类,我无法理解如何安排内容和事件处理。


public class SwingCalculator extends JFrame {

    private JButton jbtReset;

    private JButton jbtAdd;

    private JButton jbtSubtract;


    private double TEMP;

    private double SolveTEMP;

    private JTextField jtfResult;


    Boolean addBool = false;

    Boolean subBool = false;


    String display = "";


    public SwingCalculator() 

    {

        JPanel p1 = new JPanel();

        p1.setLayout(new GridLayout(4, 3));

        p1.add(jbtReset = new JButton("Reset"));


        JPanel p2 = new JPanel();

        p2.setLayout(new FlowLayout());

        p2.add(jtfResult = new JTextField(10));

        jtfResult.setEditable(true);


        JPanel p3 = new JPanel();

        p3.setLayout(new GridLayout(5, 1));

        p3.add(jbtAdd = new JButton("+"));

        p3.add(jbtSubtract = new JButton("-"));


        JPanel p = new JPanel();

        p.setLayout(new GridLayout());

        p.add(p2);

        p.add(p1);

        p.add(p3);


        add(p);


        jbtAdd.addActionListener(new ListenToAdd());

        jbtSubtract.addActionListener(new ListenToSubtract());

        jbtReset.addActionListener(new ListenToReset());

    } //JavaCaluclator()


    class ListenToReset implements ActionListener {

        public void actionPerformed(ActionEvent e) {

            //display = jtfResult.getText();

            jtfResult.setText("");

            addBool = false;

            subBool = false;

            TEMP = 0;

            SolveTEMP = 0;

        }

    }


    class ListenToAdd implements ActionListener {

        public void actionPerformed(ActionEvent e) {

            TEMP = Double.parseDouble(jtfResult.getText());

            jtfResult.setText("");

            addBool = true;

            SolveTEMP = SolveTEMP + TEMP;

            jtfResult.setText(  Double.toString(SolveTEMP));

            addBool = false;

            subBool = false;

        }

    }


我的结果:

http://img3.mukewang.com/63f7294b0001dd1d03960173.jpg

预期结果:

http://img4.mukewang.com/63f7295800012f1303020153.jpg


小怪兽爱吃肉
浏览 85回答 1
1回答

沧海一幻觉

您可以使用GridBagLayout各种选项。例如:GridBagLayout grid = new GridBagLayout();  GridBagConstraints gbc = new GridBagConstraints();  setLayout(grid); //add TFgbc.gridx=1;gbc.gridy=0;this.add(new JTextField(10),gbc);gbc.gridx=0;gbc.gridy=1;this.add(new JButton("+"),gbc);gbc.gridx=1;this.add(new JButton("-"),gbc);gbc.gridx=2;this.add(new JButton("Reset"),gbc);//also for another display (first TF will be on the same x as - Button) //(and maybe you want TF to cover the space for all 3 Button +,-,Reset)//you could add 2 panels one over other (x=0 : y=0,y=1), place TF on P1 and all Buttons on P2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java