I am a beginner programmer and I was trying to make a simple calculator, but for some reason, the buttons don't seem to work properly and they either disappear, fill up the whole panel, or are set in the wrong positions. The weird thing is that the buttons appear when I hover and click my mouse over them. I might be missing something very obvious but please help (Also the code isn't very clean). Thank you!
Main
public abstract class Main {
public static JFrame frame = new JFrame("Calculator");
public static JPanel panel = new JPanel();
public static CaculatorButton buttons = new CalculatorButton();
public static void main(String[] args) {
Window.window(frame, panel);
buttons.b0(panel);
}
}
CalculatorButton
public class CaculatorButton {
private static JButton b0, b1, b2, b3, b4, b5, b6, b7, b8, b9;
private static JTextArea text;
private static JButton plus;
private static JButton minus;
private static JButton equals;
private static String temp;
public void b0(JPanel panel) {
b0 = new JButton("0");
b0.setFocusable(false);
b0.setBackground(Color.GRAY);
b0.setPreferredSize(new Dimension(80, 80));
panel.add(b0);
b0.setBounds(10, 395, 80, 80);
b1(panel); b2(panel); b3(panel); b4(panel); b5(panel); b6(panel); b7(panel); b8(panel); b9(panel); textArea(panel); plus(panel); minus(panel);
equals(panel); input();
}
private static void b1(JPanel panel) {
b1 = new JButton("1");
b1.setFocusable(false);
b1.setBackground(Color.GRAY);
b1.setPreferredSize(new Dimension(80, 80));
panel.add(b1);
b1.setBounds(10, 140, 80, 80);
}
private static void b2(JPanel panel) {
b2 = new JButton("2");
b2.setFocusable(false);
b2.setBackground(Color.GRAY);
b2.setPreferredSize(new Dimension(80, 80));
panel.add(b2);
b2.setBounds(95, 140, 80, 80);
}
private static void b3(JPanel panel) {
b3 = new JButton("3");
b3.setFocusable(false);
b3.setBackground(Color.GRAY);
b3.setPreferredSize(new Dimension(80, 80));
panel.add(b3);
b3.setBounds(180, 140, 80, 80);
}
private static void b4(JPanel panel) {
b4 = new JButton("4");
b4.setFocusable(false);
b4.setBackground(Color.GRAY);
b4.setPreferredSize(new Dimension(80, 80));
panel.add(b4);
b4.setBounds(10, 225, 80, 80);
}
private static void b5(JPanel panel) {
b5 = new JButton("5");
b5.setFocusable(false);
b5.setBackground(Color.GRAY);
b5.setPreferredSize(new Dimension(80, 80));
panel.add(b5);
b5.setBounds(95, 225, 80, 80);
}
private static void b6(JPanel panel) {
b6 = new JButton("6");
b6.setFocusable(false);
b6.setBackground(Color.GRAY);
b6.setPreferredSize(new Dimension(80, 80));
panel.add(b6);
b6.setBounds(180, 225, 80, 80);
}
private static void b7(JPanel panel) {
b7 = new JButton("7");
b7.setFocusable(false);
b7.setBackground(Color.GRAY);
b7.setPreferredSize(new Dimension(80, 80));
panel.add(b7);
b7.setBounds(10, 310, 80, 80);
}
private static void b8(JPanel panel) {
b8 = new JButton("8");
b8.setFocusable(false);
b8.setBackground(Color.GRAY);
b8.setPreferredSize(new Dimension(80, 80));
panel.add(b8);
b8.setBounds(95, 310, 80, 80);
}
private static void b9(JPanel panel) {
b9 = new JButton("9");
b9.setFocusable(false);
b9.setBackground(Color.GRAY);
b9.setPreferredSize(new Dimension(80, 80));
panel.add(b9);
b9.setBounds(180, 310, 80, 80);
}
private static void plus(JPanel panel) {
plus = new JButton("+");
plus.setFocusable(false);
plus.setBackground(new Color(0, 200, 150));
plus.setPreferredSize(new Dimension(80, 80));
panel.add(plus);
plus.setBounds(95, 395, 80, 80);
}
private static void minus(JPanel panel) {
minus = new JButton("-");
minus.setFocusable(false);
minus.setBackground(new Color(0, 200, 150));
b0.setPreferredSize(new Dimension(80, 80));
panel.add(minus);
minus.setBounds(180, 395, 80, 80);
}
private static void equals(JPanel panel) {
equals = new JButton("=");
equals.setFocusable(false);
equals.setBackground(new Color(200, 125, 0));
b0.setPreferredSize(new Dimension(80, 335));
panel.add(equals);
equals.setBounds(265, 140, 80, 335);
}
private static void input() {
JButton[] buttons = {b0, b1, b2, b3, b4, b5, b6, b7, b8, b9};
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i <= 9; i++) {
if(e.getSource()== buttons[i]) {
String str = Integer.toString(i);
if (temp == null) {
temp = str;
} else {
temp = temp + str;
text.setText(temp);
}
}
}
}
};
b0.addActionListener(al);
b1.addActionListener(al);
b2.addActionListener(al);
b3.addActionListener(al);
b4.addActionListener(al);
b5.addActionListener(al);
b6.addActionListener(al);
b7.addActionListener(al);
b8.addActionListener(al);
b9.addActionListener(al);
}
private static void textArea(JPanel panel) {
text = new JTextArea("");
panel.add(text);
text.setVisible(true);
text.setFocusable(true);
text.setForeground(new Color(51,255,255));
text.setFont(text.getFont().deriveFont(25f));
text.setBackground(Color.DARK_GRAY);
text.setBounds(10, 10, 335, 120);
}
}
Window
public class Window extends JFrame {
public static void window(JFrame frame, JPanel panel) {
frame.setSize(370, 522);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setLayout(new BorderLayout());
frame.add(panel, BorderLayout.CENTER);
panel.setBackground(Color.DARK_GRAY);
}
}