Nathan Ramos
asked on
Need help aligning JRadioButton that put in a box using GridBagLayout
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.color.ColorSpace;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.Container;
import java.awt.event.ActionEvent;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.Border;
public class Calculator extends JPanel{
public static final long serialVersionUID = 1L;
private static final int WIDTH = 600;
private static final int HIGHT = 535;
private JButton btn0, btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btnA,btnB,btnC,btnD,btnE,btnF,backSpace,btnBlank,
btnBlank1,btnBlank2,btnBlank3,btnBlank4,btnBlank5,btnBlank6,btnBlank7,btnBlank8,btnBlank9,
btnBlank10, btnBlank11,btnBlank12,btnBlank13,btnBlank14, btnQuot,btnMod,
btnCE, btnClear, btnPlusMinus, btnSqrt, btnDivid, btnPercent, btnMult, btn1_OverX, btnMinus, btnEquals,
btnDecimal, btnPlus;
private JRadioButton hexRadio, decRadio, octRadio, binRadio;
private ButtonGroup group;
private JTextField outputField;
private String stemp1, stemp2, sAnswer;
private boolean equalsClicked, opChosen;
private String operand1 = "";
private String operand2 = "";
private String operator = "";
private JPanel MainPanel = new JPanel();
private JPanel OutputPanel = new JPanel();
private JPanel BinaryPanel = new JPanel();
private JPanel ButtonsPanel = new JPanel();
private ActionListener NumberTapped = new ActionListener() {
@Override
public void actionPerformed (ActionEvent e) {
// JOptionPane.showMessageDialog(null, "Number tapped");
JButton src = (JButton) e.getSource();
String numberSelected = "";
if (src.equals(btn0))
numberSelected = "0";
else if (src.equals(btn1))
numberSelected = "1";
else if (src.equals(btn2))
numberSelected = "2";
else if (src.equals(btn3))
numberSelected = "3";
else if (src.equals(btn4))
numberSelected = "4";
else if (src.equals(btn5))
numberSelected = "5";
else if (src.equals(btn6))
numberSelected = "6";
else if (src.equals(btn7))
numberSelected = "7";
else if (src.equals(btn8))
numberSelected = "8";
else if (src.equals(btn9))
numberSelected = "9";
else if (src.equals(btnA))
numberSelected = "1010";
else if (src.equals(btnB))
numberSelected = "1011";
else if (src.equals(btnC))
numberSelected = "1100";
else if (src.equals(btnD))
numberSelected = "1101";
else if (src.equals(btnE))
numberSelected = "1110";
else if (src.equals(btnF))
numberSelected = "1111";
//if the operator hasnt been set, then append the number onto operand1
//***remember, once the = (equals) button is pushed, operator, operand1, and operator2 need to be reset to empty strings
if (operator.equals("") && operand1.equals("")) {
operand1 = operand1 + numberSelected;
outputField.setText(operand1);
} else if (!operator.equals("")) {//else if the operator has been set, then append the number onto operand2
operand2 = operand2 + numberSelected;
outputField.setText(operand2);
}
}
};
private ActionListener OperatorTapped = new ActionListener() {
@Override
public void actionPerformed (ActionEvent e) {
//JOptionPane.showMessageDialog(null, "Operator tapped");
JButton src = (JButton)e.getSource();
if (src.equals(btnPlus))
operator = "+";
else if (src.equals(btnMinus))
operator = "-";
else if (src.equals(btnDivid))
operator = "/";
else if (src.equals(btnMult))
operator = "*";
else if (src.equals(btnPlusMinus))
operator = "+/-";
else if (src.equals(btnPercent))
operator = "%";
else if (src.equals(btnSqrt))
operator = "sqrt";
else if (src.equals(btnCE)) {
if (operator.equals("")) {
operand1 = operand1.substring(0, operand1.length()-2);
outputField.setText(operand1);
} else if (!operator.equals("")) {
operand2 = operand2.substring(0, operand2.length()-2);
outputField.setText(operand2);
}
}
}
};
private ActionListener EqualsTapped = new ActionListener() {
@Override
public void actionPerformed (ActionEvent e) {
// JOptionPane.showMessageDialog(null, "Equals tapped");
String result = "";
if (!operand1.equals("") && !operand2.equals("") && !operator.equals("")) {
double op1 = Double.parseDouble(operand1);
double op2 = Double.parseDouble(operand2);
if (operator.equals("+"))
result = Double.toString(op1 + op2);
else if (operator.equals("-"))
result = Double.toString(op1 - op2);
else if (operator.equals("*"))
result = Double.toString(op1 * op2);
else if (operator.equals("sqrt"))
result = Double.toString(Math.sqrt(op1));
else if (operator.equals("/")) {
if (operand2.equals("0"))
result = "DBZERR"; //divide by zero error
else
result = Double.toString(op1 / op2);
}
operand1 = result;
operand2 = "";
operator = "";
}
outputField.setText(result);
}
};
private ActionListener ClearTapped = new ActionListener() {
@Override
public void actionPerformed (ActionEvent e) {
// JOptionPane.showMessageDialog(null, "Clear tapped");
outputField.setText("");
operand1 = "";
operand2 = "";
operator = "";
}
};
public Calculator(){
this.setPreferredSize(new Dimension(WIDTH, HIGHT));
MainPanel.setLayout(new BoxLayout(MainPanel,BoxLayout.PAGE_AXIS));
this.add(MainPanel);
OutputPanel.setLayout(new BorderLayout());
BinaryPanel.setLayout(new BorderLayout());
ButtonsPanel.setLayout(new GridBagLayout());
MainPanel.add(OutputPanel);
MainPanel.add(BinaryPanel);
MainPanel.add(ButtonsPanel);
outputField = new JTextField(null, 38);
outputField.setPreferredSize(new Dimension(10,60));
outputField.setHorizontalAlignment(JTextField.RIGHT);
outputField.setEditable(false);
OutputPanel.add(outputField);
JTextArea binaryArea = new JTextArea(2,1);
binaryArea.setText(" 0000 0000 0000 0000 0000 0000 0000 0000"
+ "\n 63 47 32"
+ "\n 0000 0000 0000 0000 0000 0000 0000 0000"
+ "\n 31 15 0"
);
binaryArea.setEditable(false);
BinaryPanel.add(binaryArea);
GridBagConstraints gbConstraints = new GridBagConstraints();
hexRadio = new JRadioButton("Hex");
decRadio = new JRadioButton("Dec");
octRadio = new JRadioButton("Oct");
binRadio = new JRadioButton("Bin");
Box sizeBox = Box.createVerticalBox();
gbConstraints.fill = GridBagConstraints.CENTER;
group = new ButtonGroup();
group.add(hexRadio);
group.add(decRadio);
group.add(octRadio);
group.add(binRadio);
sizeBox.add(hexRadio);
sizeBox.add(decRadio);
sizeBox.add(octRadio);
sizeBox.add(binRadio);
// gbConstraints.gridx = 0;
// gbConstraints.gridy = 3;
// gbConstraints.gridwidth = 2;
// gbConstraints.gridheight = 1;
Border groupBorder = BorderFactory.createRaisedBevelBorder();
sizeBox.setBorder(groupBorder);
ButtonsPanel.add(sizeBox, gbConstraints);
// gbConstraints.gridx = 0;
// gbConstraints.gridy = 0;
// ButtonsPanel.add(sizeBox, gbConstraints);
// ButtonsPanel.add(hexRadio, gbConstraints);
// gbConstraints.gridx = 0;
// gbConstraints.gridy = 1;
// ButtonsPanel.add(sizeBox, gbConstraints);
// ButtonsPanel.add(decRadio, gbConstraints);
// gbConstraints.gridx = 0;
// gbConstraints.gridy = 2;
// ButtonsPanel.add(sizeBox, gbConstraints);
// ButtonsPanel.add(octRadio, gbConstraints);
// gbConstraints.gridx = 0;
// gbConstraints.gridy = 3;
// ButtonsPanel.add(sizeBox, gbConstraints);
// ButtonsPanel.add(binRadio, gbConstraints);
btnQuot = new JButton("Quot");
btnQuot.setPreferredSize(new Dimension(55, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 1;
gbConstraints.gridy = 0;
//btnQuot.addActionListener(this);
ButtonsPanel.add(btnQuot, gbConstraints);
btnMod = new JButton("Mod");
btnMod.setPreferredSize(new Dimension(55, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 2;
gbConstraints.gridy = 0;
//btnMod.addActionListener(this);
ButtonsPanel.add(btnMod, gbConstraints);
btnA = new JButton("A");
btnA.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 3;
gbConstraints.gridy = 0;
//btnA.addActionListener(this);
ButtonsPanel.add(btnA, gbConstraints);
btnBlank = new JButton("");
btnBlank.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 4;
gbConstraints.gridy = 0;
ButtonsPanel.add(btnBlank, gbConstraints);
btnBlank1 = new JButton("");
btnBlank1.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 5;
gbConstraints.gridy = 0;
ButtonsPanel.add(btnBlank1, gbConstraints);
btnBlank2 = new JButton("");
btnBlank2.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 6;
gbConstraints.gridy = 0;
ButtonsPanel.add(btnBlank2, gbConstraints);
btnBlank3 = new JButton("");
btnBlank3.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 7;
gbConstraints.gridy = 0;
ButtonsPanel.add(btnBlank3, gbConstraints);
btnBlank4 = new JButton("");
btnBlank4.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 8;
gbConstraints.gridy = 0;
ButtonsPanel.add(btnBlank4, gbConstraints);
btnBlank5 = new JButton("");
btnBlank5.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 1;
gbConstraints.gridy = 1;
ButtonsPanel.add(btnBlank5, gbConstraints);
btnBlank6 = new JButton("");
btnBlank6.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 2;
gbConstraints.gridy = 1;
ButtonsPanel.add(btnBlank6, gbConstraints);
btnB = new JButton("B");
btnB.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 3;
gbConstraints.gridy = 1;
//btnB.addActionListener(this);
ButtonsPanel.add(btnB, gbConstraints);
backSpace = new JButton("←");
backSpace.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 4;
gbConstraints.gridy = 1;
//backSpace.addActionListener(this);
ButtonsPanel.add(backSpace, gbConstraints);
btnCE = new JButton("CE");
btnCE.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 5;
gbConstraints.gridy = 1;
//btnCE.addActionListener(this);
ButtonsPanel.add(btnCE, gbConstraints);
btnClear = new JButton("C");
btnClear.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 6;
gbConstraints.gridy = 1;
btnClear.addActionListener(ClearTapped);
ButtonsPanel.add(btnClear, gbConstraints);
btnPlusMinus = new JButton("+/-");
btnPlusMinus.setPreferredSize(new Dimension(55, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 7;
gbConstraints.gridy = 1;
//btnPlusMinus.addActionListener(this);
ButtonsPanel.add(btnPlusMinus, gbConstraints);
btnSqrt = new JButton("√");
btnSqrt.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 8;
gbConstraints.gridy = 1;
//btnSqrt.addActionListener(this);
ButtonsPanel.add(btnSqrt, gbConstraints);
btnBlank7 = new JButton("");
btnBlank7.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 1;
gbConstraints.gridy = 2;
ButtonsPanel.add(btnBlank6, gbConstraints);
btnBlank8 = new JButton("");
btnBlank8.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 2;
gbConstraints.gridy = 2;
ButtonsPanel.add(btnBlank8, gbConstraints);
btnC = new JButton("C");
btnC.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 3;
gbConstraints.gridy = 2;
//btnC.addActionListener(this);
ButtonsPanel.add(btnC, gbConstraints);
btn7 = new JButton("7");
btn7.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 4;
gbConstraints.gridy = 2;
btn7.addActionListener(NumberTapped);
ButtonsPanel.add(btn7, gbConstraints);
btn8 = new JButton("8");
btn8.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 5;
gbConstraints.gridy = 2;
btn8.addActionListener(NumberTapped);
ButtonsPanel.add(btn8, gbConstraints);
btn9 = new JButton("9");
btn9.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 6;
gbConstraints.gridy = 2;
btn9.addActionListener(NumberTapped);
ButtonsPanel.add(btn9, gbConstraints);
btnDivid = new JButton("/");
btnDivid.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 7;
gbConstraints.gridy = 2;
btnDivid.addActionListener(OperatorTapped);
ButtonsPanel.add(btnDivid, gbConstraints);
btnPercent = new JButton("%");
btnPercent.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 8;
gbConstraints.gridy = 2;
//btnPercent.addActionListener(this);
ButtonsPanel.add(btnPercent, gbConstraints);
btnBlank9 = new JButton("");
btnBlank9.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 1;
gbConstraints.gridy = 3;
ButtonsPanel.add(btnBlank9, gbConstraints);
btnBlank10 = new JButton("");
btnBlank10.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 2;
gbConstraints.gridy = 3;
ButtonsPanel.add(btnBlank10, gbConstraints);
btnD = new JButton("D");
btnD.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 3;
gbConstraints.gridy = 3;
//btnD.addActionListener(this);
ButtonsPanel.add(btnD, gbConstraints);
btn4 = new JButton("4");
btn4.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 4;
gbConstraints.gridy = 3;
btn4.addActionListener(NumberTapped);
ButtonsPanel.add(btn4, gbConstraints);
btn5= new JButton("5");
btn5.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 5;
gbConstraints.gridy = 3;
btn5.addActionListener(NumberTapped);
ButtonsPanel.add(btn5, gbConstraints);
btn6 = new JButton("6");
btn6.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 6;
gbConstraints.gridy = 3;
btn6.addActionListener(NumberTapped);
ButtonsPanel.add(btn6, gbConstraints);
btnMult = new JButton("*");
btnMult.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 7;
gbConstraints.gridy = 3;
btnMult.addActionListener(OperatorTapped);
ButtonsPanel.add(btnMult, gbConstraints);
btn1_OverX = new JButton("1/x");
btn1_OverX.setPreferredSize(new Dimension(50, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 8;
gbConstraints.gridy = 3;
//btn1_OverX.addActionListener(this);
ButtonsPanel.add(btn1_OverX, gbConstraints);
btnBlank11 = new JButton("");
btnBlank11.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 1;
gbConstraints.gridy = 4;
ButtonsPanel.add(btnBlank11, gbConstraints);
btnBlank12 = new JButton("");
btnBlank12.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 2;
gbConstraints.gridy = 4;
ButtonsPanel.add(btnBlank12, gbConstraints);
btnE = new JButton("E");
btnE.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 3;
gbConstraints.gridy = 4;
btnE.addActionListener(NumberTapped);
ButtonsPanel.add(btnE, gbConstraints);
btn1 = new JButton("1");
btn1.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 4;
gbConstraints.gridy = 4;
btn1.addActionListener(NumberTapped);
ButtonsPanel.add(btn1, gbConstraints);
btn2 = new JButton("2");
btn2.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 5;
gbConstraints.gridy = 4;
btn2.addActionListener(NumberTapped);
ButtonsPanel.add(btn2, gbConstraints);
btn3 = new JButton("3");
btn3.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 6;
gbConstraints.gridy = 4;
btn3.addActionListener(NumberTapped);
ButtonsPanel.add(btn3, gbConstraints);
btnMinus = new JButton("-");
btnMinus.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 7;
gbConstraints.gridy = 4;
btnMinus.addActionListener(OperatorTapped);
ButtonsPanel.add(btnMinus, gbConstraints);
btnEquals = new JButton("=");
btnEquals.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.VERTICAL;
gbConstraints.gridheight = 2;
gbConstraints.gridx = 8;
gbConstraints.gridy = 4;
btnEquals.addActionListener(EqualsTapped);
ButtonsPanel.add(btnEquals, gbConstraints);
gbConstraints.gridheight = 1;
btnBlank13 = new JButton("");
btnBlank13.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 1;
gbConstraints.gridy = 5;
ButtonsPanel.add(btnBlank13, gbConstraints);
btnBlank14 = new JButton("");
btnBlank14.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 2;
gbConstraints.gridy = 5;
ButtonsPanel.add(btnBlank14, gbConstraints);
btnF= new JButton("F");
btnF.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 3;
gbConstraints.gridy = 5;
//btnF.addActionListener(this);
ButtonsPanel.add(btnF, gbConstraints);
btn0 = new JButton("0");
btn0.setPreferredSize(new Dimension(90, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridwidth = 2;
gbConstraints.gridx = 4;
gbConstraints.gridy = 5;
btn0.addActionListener(NumberTapped);
ButtonsPanel.add(btn0, gbConstraints);
gbConstraints.gridwidth = 1;
btnDecimal = new JButton(".");
btnDecimal.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 6;
gbConstraints.gridy = 5;
btnDecimal.addActionListener(NumberTapped);
ButtonsPanel.add(btnDecimal, gbConstraints);
btnPlus = new JButton("+");
btnPlus.setPreferredSize(new Dimension(45, 45));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 7;
gbConstraints.gridy = 5;
btnPlus.addActionListener(OperatorTapped);
ButtonsPanel.add(btnPlus, gbConstraints);
}
public static void main(String[] args){
JFrame frame = new JFrame("My Programmer Calculator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLayout(new BorderLayout());
frame.add(new Calculator(), BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
Screen-Shot-2017-03-05-at-2.38.52-PM.pngScreen-Shot-2017-03-04-at-8.05.35-PM.png
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Open in new window