JButton的大小和位置

时间:2018-10-31 21:17:52

标签: jbutton

您好,程序员们!我开始学习Java,作为一个项目,我下定决心要制作一个视觉计算器。我的问题是我无法为按钮设置确切的位置或大小,请给我一些帮助!

import javax.swing.*;
import java.awt.*;

public class Calculator{



public static void main(String[] args) {

//Frame & sizes 
JFrame f = new JFrame("Calculator");
f.setSize(400, 500);
f.setLocation(300,200);

//Text area
final JTextArea textArea = new JTextArea(10, 40);
f.getContentPane().add(BorderLayout.NORTH, textArea);

//Buttons
final JButton button1 = new JButton("1");
button1.setBounds(160, 100, 410, 100);



}

}

1 个答案:

答案 0 :(得分:0)

您需要执行许多其他设置,有关教程,请参考此article。他们在引导您完成这些步骤方面做得很好,如果您想尝试一下最终解决方案,我只是粘贴了最终解决方案。要进行复制,只需创建一个新的Java类JavaCalculator并运行main方法,希望对您有所帮助!

JavaCalculator:

import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.Container;

public class JavaCalculator implements ActionListener{

    JFrame guiFrame;
    JPanel buttonPanel;
    JTextField numberCalc;
    int calcOperation = 0;
    int currentCalc;

    public static void main(String[] args) {

        EventQueue.invokeLater(new Runnable()
        {

            public void run()
            {

                new JavaCalculator();
            }
        });

    }

    public JavaCalculator()
    {
        guiFrame = new JFrame();
        guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        guiFrame.setTitle("Simple Calculator");
        guiFrame.setSize(300,300);
        guiFrame.setLocationRelativeTo(null);
        numberCalc = new JTextField();
        numberCalc.setHorizontalAlignment(JTextField.RIGHT);
        numberCalc.setEditable(false);
        guiFrame.add(numberCalc, BorderLayout.NORTH);
        buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(4,4));
        guiFrame.add(buttonPanel, BorderLayout.CENTER);

        for (int i=0;i<10;i++)
        {
            addNumberButton(buttonPanel, String.valueOf(i));
        }

        addActionButton(buttonPanel, 1, "+");
        addActionButton(buttonPanel, 2, "-");
        addActionButton(buttonPanel, 3, "*");
        addActionButton(buttonPanel, 4, "/");
        addActionButton(buttonPanel, 5, "^2");

        JButton equalsButton = new JButton("=");
        equalsButton.setActionCommand("=");
        equalsButton.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                if (!numberCalc.getText().isEmpty())
                {
                    int number = Integer.parseInt(numberCalc.getText());
                    if (calcOperation == 1)
                    {
                        int calculate = currentCalc  + number;
                        numberCalc.setText(Integer.toString(calculate));
                    }
                    else if (calcOperation == 2)
                    {
                        int calculate = currentCalc  - number;
                        numberCalc.setText(Integer.toString(calculate));
                    }
                    else if (calcOperation == 3)
                    {
                        int calculate = currentCalc  * number;
                        numberCalc.setText(Integer.toString(calculate));
                    }
                    else if (calcOperation == 4)
                    {
                        int calculate = currentCalc  / number;
                        numberCalc.setText(Integer.toString(calculate));
                    }
                    else if (calcOperation == 5)
                    {
                        int calculate = currentCalc  * currentCalc;
                        numberCalc.setText(Integer.toString(calculate));
                    }
                }
            }
        });

        buttonPanel.add(equalsButton);
        guiFrame.setVisible(true);
    }

    private void addNumberButton(Container parent, String name)
    {
        JButton but = new JButton(name);
        but.setActionCommand(name);
        but.addActionListener(this);
        parent.add(but);
    }

    private void addActionButton(Container parent, int action, String text)
    {
        JButton but = new JButton(text);
        but.setActionCommand(text);
        OperatorAction addAction = new OperatorAction(1);
        but.addActionListener(addAction);
        parent.add(but);
    }

    public void actionPerformed(ActionEvent event)
    {
        String action = event.getActionCommand();

        numberCalc.setText(action);
    }

    private class OperatorAction implements ActionListener
    {
        private int operator;

        public OperatorAction(int operation)
        {
            operator = operation;
        }

        public void actionPerformed(ActionEvent event)
        {
            currentCalc = Integer.parseInt(numberCalc.getText());
            calcOperation = operator;
        }
    }
}