Zaczalem przygode z java 3 tygodnie temu wiec nie smiac sie ... ;]
Pisze prosty kalkulatorek, na tapecie mam JTextField (do wyswietlania wyniku) dwa kolejne JTextField (wprowadzanie wartosci dwoch zmiennych), JComboBox (4 opcje dla operacji +,-,*,/) oraz JButton.
problem w tym ze nie pobiera mi wartosci wybranej w JComboBox i dlatego nie wykonuja sie operacje "pod" JButton, dlaczego?? cos czuje ze blad jest banalny, ale siedze 2 godziny, kombinuje i nic...
ponizej kod, dzieki za ewentualna pomoc...
package testy;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class test extends JFrame implements ActionListener, ItemListener {
JLabel wynikLabel=new JLabel("Wynik");
JTextField wynik=new JTextField("", 20);
JButton oblicz=new JButton("Oblicz");
JLabel zm1Label=new JLabel("Podaj pierwszą zmienną");
JTextField zm1=new JTextField("", 10);
JLabel zm2Label=new JLabel("Podaj drugą zmienną");
JTextField zm2=new JTextField("", 10);
JComboBox operacja=new JComboBox();
float dzialanie;
float daneZm1;
float daneZm2;
String zmienna, operation, dzialanie1;
void buildConstraints(GridBagConstraints gbc, int gx, int gy,
int gw, int gh, int wx, int wy) {
gbc.gridx=gx;
gbc.gridy=gy;
gbc.gridwidth=gw;
gbc.gridheight=gh;
gbc.weightx=wx;
gbc.weighty=wy;
}
public test() {
super("Test");
setSize(200,200);
GridBagLayout gridbag=new GridBagLayout();
GridBagConstraints constraints=new GridBagConstraints();
oblicz.addActionListener(this);
JPanel pane=new JPanel();
pane.setLayout(gridbag);
//pole tekstowe z wynikiem
buildConstraints(constraints, 0, 0, 2, 1, 0, 40);
//constraints.fill=GridBagConstraints.WEST;
//constraints.anchor=GridBagConstraints.EAST;
wynik.setEditable(false);
gridbag.setConstraints(wynik, constraints);
pane.add(wynik);
//pierwszy przycisk
buildConstraints(constraints, 0, 1, 1, 1, 0, 20);
constraints.fill=GridBagConstraints.CENTER;
//constraints.anchor=GridBagConstraints.EAST;
gridbag.setConstraints(zm1, constraints);
pane.add(zm1);
//drugi przycisk
buildConstraints(constraints, 1, 1, 1, 1, 20, 20);
constraints.fill=GridBagConstraints.EAST;
gridbag.setConstraints(zm2, constraints);
pane.add(zm2);
//pole tekstowe zm1
buildConstraints(constraints, 0, 2, 2, 1, 100, 100);
gridbag.setConstraints(oblicz, constraints);
pane.add(oblicz);
//radiobuttony
operacja.addItem("");
operacja.addItem("dodaj");
operacja.addItem("odejmij");
operacja.addItem("pomnoz");
operacja.addItem("podziel");
pane.add(operacja);
setContentPane(pane);
}
public static void main(String[] args) {
JFrame frame=new test();
ExitWindow exit=new ExitWindow();
frame.addWindowListener(exit);
frame.pack();
frame.setVisible(true);
}
public void itemStateChanged(ItemEvent evt) {
Object source=evt.getSource();
if (source==operacja) {
Object whichMarked=evt.getSource();
operation=whichMarked.toString();
}
}
public void actionPerformed(ActionEvent ae) {
Object source=ae.getSource();
if (source==oblicz) {
daneZm1=Float.parseFloat(zm1.getText());
daneZm2=Float.parseFloat(zm2.getText());
if (operation=="dodaj") {
dzialanie=daneZm1+daneZm2;
}
else if (operation=="odejmij") {
dzialanie=daneZm1-daneZm2;
}
else if (operation=="pomnoz") {
dzialanie=daneZm1*daneZm2;
}
else if (operation=="podziel") {
dzialanie=daneZm1/daneZm2;
}
wynik.setText(""+dzialanie);
}
repaint();
}
}
class ExitWindow extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}