I need to arrange my buttons in a specific order but whatever modification I do it only changes the size of the buttons not the placement. Sorry if this is a easy question, this is my first Java class and I am having trouble understanding how to arrange stuff and event handling.
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;
}
}
class ListenToSubtract implements ActionListener {
public void actionPerformed(ActionEvent e) {
TEMP = Double.parseDouble(jtfResult.getText());
jtfResult.setText("");
subBool = true;
SolveTEMP = SolveTEMP - TEMP;
jtfResult.setText( Double.toString(SolveTEMP));
addBool = false;
subBool = false;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingCalculator calc = new SwingCalculator();
calc.pack();
calc.setLocationRelativeTo(null);
calc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
calc.setVisible(true);
}
} //JavaCalculator
My result:
Expected result: