Kalkulator z swingiem

0

Witam, od dłuższego czasu próbuje stworzyć kalkulator na wzór kalkulatora windowsowego. Schody zaczynają się, gdy operatory (+-*/=) mają odegrać swoją rolę. Prosiłbym o jakieś rady ;)

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class kalk extends JFrame implements ActionListener {

	JButton B1, B2, B3, B4, B5, B6, B7, B8, B9, Ba, Bb, Bc, Bd, Be;
	JTextField TextField;
	public static int wynik;
	String wynik2;
	
	public kalk(){
			
		setSize(350,350);
		setTitle("MegaProg");
		
		B1 = new JButton();
		setLayout(null);
		B1.setBounds(50, 70, 45, 45);
		B1.setText("1");
		add(B1);
		B1.addActionListener(this);
		
		B2 = new JButton();
		setLayout(null);
		B2.setBounds(90, 70, 45, 45);
		B2.setText("2");
		add(B2);
		B2.addActionListener(this);
		
		B3 = new JButton();
		setLayout(null);
		B3.setBounds(130, 70, 45, 45);
		B3.setText("3");
		add(B3);
		B3.addActionListener(this);
		
		B4 = new JButton();
		setLayout(null);
		B4.setBounds(50, 120, 45, 45);
		B4.setText("4");
		add(B4);
		B4.addActionListener(this);
		
		B5 = new JButton();
		setLayout(null);
		B5.setBounds(90, 120, 45, 45);
		B5.setText("5");
		add(B5);
		B5.addActionListener(this);
		
		B6 = new JButton();
		setLayout(null);
		B6.setBounds(130, 120, 45, 45);
		B6.setText("6");
		add(B6);
		B6.addActionListener(this);
		
		B7 = new JButton();
		setLayout(null);
		B7.setBounds(50, 170, 45, 45);
		B7.setText("7");
		add(B7);
		B7.addActionListener(this);
		
		B8 = new JButton();
		setLayout(null);
		B8.setBounds(90, 170, 45, 45);
		B8.setText("8");
		add(B8);
		B8.addActionListener(this);
		
		B9 = new JButton();
		setLayout(null);
		B9.setBounds(130, 170, 45, 45);
		B9.setText("9");
		add(B9);
		B9.addActionListener(this);
		
		Ba = new JButton();
		setLayout(null);
		Ba.setBounds(200, 70, 45, 45);
		Ba.setText("+");
		add(Ba);
		Ba.addActionListener(this);
		
		Bb = new JButton();
		setLayout(null);
		Bb.setBounds(250, 70, 45, 45);
		Bb.setText("-");
		add(Bb);
		Bb.addActionListener(this);
		
		Bc = new JButton();
		setLayout(null);
		Bc.setBounds(200, 120, 45, 45);
		Bc.setText("*");
		add(Bc);
		Bc.addActionListener(this);
		
		Bd = new JButton();
		setLayout(null);
		Bd.setBounds(200, 170, 45, 45);
		Bd.setText("/");
		add(Bd);
		Bd.addActionListener(this);
		
		Be = new JButton();
		setLayout(null);
		Be.setBounds(200, 220, 45, 45);
		Be.setText("=");
		add(Be);
		Be.addActionListener(this);
		
		TextField = new JTextField("");
		TextField.setBounds(50, 20, 245, 40);
		add(TextField);
	
		
	}


	

@Override
	public void actionPerformed(ActionEvent e) {
		
		//Bb.addActionListener(this);
		//Bc.addActionListener(this);
		//Bd.addActionListener(this);
		//Be.addActionListener(this);
		
	
	
		Object źródło = e.getSource();
		if(źródło==B1){
			TextField.setText(TextField.getText()+"1");
			
		}
		
		else if(źródło==B2){
			TextField.setText(TextField.getText()+"2");
		}
		
		else if(źródło==B3){
			TextField.setText(TextField.getText()+"3");
		}
		
		else if(źródło==B4){
			TextField.setText(TextField.getText()+"4");
		}

		else if(źródło==B5){
			TextField.setText(TextField.getText()+"5");
		}
		
		else if(źródło==B6){
			TextField.setText(TextField.getText()+"6");
		}
		
		else if(źródło==B7){
			TextField.setText(TextField.getText()+"7");
		}
		
		else if(źródło==B8){
			TextField.setText(TextField.getText()+"8");
		}
		
		else if(źródło==B9){
			TextField.setText(TextField.getText()+"9");
		}
	
		
		else if(źródło==Ba){
			TextField.setText(TextField.getText()+"+");
			
			wynik += Integer.toString(TextField.getText());
			wynik2 += wynik;
		}	
			
			
		else if(źródło==Bb){	
			TextField.setText(TextField.getText()+"-");
		}
		
		else if(źródło==Bc){
			TextField.setText(TextField.getText()+"*");
		}
		
		else if(źródło==Bd){
			TextField.setText(TextField.getText()+"/");
		}
		
		else if(źródło==Be){
			TextField.setText(TextField.getText(wynik2));
			

			
				}	
		
		
		
}




public static void main(String[] args){
	
	
	kalk celsjusz1 = new kalk();
	
	celsjusz1.setVisible(true);
	



}
}	
0

Rzucając okiem na ten kod, widzę, że nie masz nigdzie napisanej obsługi tych operatorów, a tylko pobierasz znak jako String, więc program i tak nie wie co ma robić. Gdy pobierasz liczby zapisuj je do zmiennych, a później gdy np. chcesz dodawać to po przyciśnięciu np "+" daj mniej więcej coś takiego:

wynik = zmienna1 + zmienna2;

i wypisz wynik.

1 użytkowników online, w tym zalogowanych: 0, gości: 1