Hi,

I'm trying to make a simple calculator. I don't know how to make the display screen and my buttons are not aligned properly.

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

public class Calculator extends JFrame{

	private JButton btn0 , btn1, btn2, btn3, btn4, btn5, btn6,
        btn7, btn8, btn9, btnDecimal, btnPlus, btnMinus, btnMultiply, 
        btnDivide, btnEquals, btnCE;
	private JPanel calculatorPanel = new JPanel();
	private JPanel mainPanel;
	private Container c;
	
	
	 public Calculator() {

    	setTitle("Calculator");
    	setSize(250, 250);
    	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Dimension minSize = new Dimension(250,250);
		setMinimumSize(minSize);
		setLocationRelativeTo(null);
    	//setLocation()
		btnDecimal = new JButton(" . ");
		btnEquals = new JButton(" = ");
		btnCE = new JButton("CE");
    	btn0 = new JButton (" 0 ");
		btn1 = new JButton(" 1 ");
		btn2 = new JButton(" 2 ");
		btn3 = new JButton(" 3 ");
		btn4 = new JButton(" 4 ");
		btn5 = new JButton(" 5 ");
		btn6 = new JButton(" 6 ");
		btn7 = new JButton(" 7 ");
		btn8 = new JButton(" 8 ");
		btn9 = new JButton(" 9 ");
		btnPlus = new JButton("+");
		btnMinus = new JButton("-");
		btnMultiply = new JButton("*");
		btnDivide = new JButton("/");
                c = getContentPane();
		setVisible(true);
		
		JPanel mainPanel = new JPanel(new GridBagLayout());
		GridBagConstraints d = new GridBagConstraints();
    	//mainPanel = new JPanel()
		
		d.gridx = 2;
		d.gridy = 1;
    	mainPanel.add(btn1, d);
		d.gridx = 2;
		d.gridy = 2;
		mainPanel.add(btn4, d);
		d.gridx = 2;
		d.gridy = 3;
		mainPanel.add(btn7, d);
		d.gridx = 3;
		d.gridy = 1;
		mainPanel.add(btn2, d);
		d.gridx = 3;
		d.gridy = 2;
		mainPanel.add(btn5, d);
		d.gridx = 3;
		d.gridy = 3;
		mainPanel.add(btn8, d);
		d.gridx = 4;
		d.gridy = 1;
		mainPanel.add(btn3, d);
		d.gridx = 4;
		d.gridy = 2;
		mainPanel.add(btn6, d);
		d.gridx = 4;
		d.gridy = 3;
		mainPanel.add(btn9, d);
		d.gridx = 2;
		d.gridy = 4;
		mainPanel.add(btnDecimal, d);
		d.gridx = 3;
		d.gridy = 4;
		mainPanel.add(btn0, d);
		d.gridx = 4;
		d.gridy = 4;
		mainPanel.add(btnCE, d);
		
		
		
		//d/.gridx = 5;
		//d.gridy = 1;
		//mainPanel.add(btnPlus, d);
		//d.gridx = 5;
		//d.gridy = 2;
		//mainPanel.add(btnMinus, d);
		d.gridx = 5;
		d.gridy = 3;
		//mainPanel.add(btnMultiply, d);
		//d.gridx = 6;
		//d/.gridy = 1;
		//mainPanel.add(btnDivide, d);
		//d.gridx = 6;
		//d.gridy = 2;
		
		c.add(mainPanel);

    	setVisible(true);
		}
		
	public static void main(String[ ] args) {
	
	Calculator cl = new Calculator();
	}


}

Recommended Answers

have you tried to use different layouts? on the swing objects there are a lot of methods that can help you out, for instance the setBounds.
but how they work will depend on wheter or not you use the right layoutmanager.

Jump to Post

Perhaps specifying a size for the GridBagLayout would help. Also, calling the pack() method before the setVisible(true) might also be useful? Its been awhile since I worked with Swing and I don't have the JRE set up right now on this computer to test, but I believe this is where …

Jump to Post

All 6 Replies

have you tried to use different layouts? on the swing objects there are a lot of methods that can help you out, for instance the setBounds.
but how they work will depend on wheter or not you use the right layoutmanager.

Perhaps specifying a size for the GridBagLayout would help. Also, calling the pack() method before the setVisible(true) might also be useful? Its been awhile since I worked with Swing and I don't have the JRE set up right now on this computer to test, but I believe this is where to start looking.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.20 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.