Cześć,
uczę się dopiero Javy i mam pewien problem z prostym kalkulatorem. Netbeans nie wyrzuca mi żadnych błędów, mogę uruchomić program, ale nie działa tak jak powinien. Konkretnie:
-
Program nie wykonuje działań (a przynajmniej nie potrafi wyświetlić ich wyniku). Przykładowo robię: liczba1 + liczba2, a po kliknięciu "Wynik" nic się nie dzieje.
Jestem w zasadzie pewien (na pięć % ;) ), że ma to związek z "Proces", a mianowicie w jaki sposób to zadeklarowałem - "String Proces;". -
Po zmianie klasy "textarea" z JTextField na JLabel, nie wyświetla mi się okienko, w którym wpisywane są liczby. Nie bardzo wiem co zrobić, żeby to naprawić. Chcę, żeby została JLabel, żeby zablokować wpisywanie "z palca".
Zamieszczam kod programu, będę wdzięczny za podpowiedzi.
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.lang.Math;
import java.lang.Double;
public class KalkulatorSlowik2 implements ActionListener {
JLabel textarea;
JButton b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, bplus, bminus, biloczyn, biloraz, clear, bbackspace, brow ;
double x,buf;
String Proces;
public void actionPerformed(ActionEvent action) {
Object target = action.getSource();
if(target==b0 || target==b1 || target==b2 || target==b3 || target==b4 || target==b5 || target==b6 || target==b7 || target==b8 || target==b9)
{
textarea.setText(textarea.getText()+((JButton)target).getText());
textarea.requestFocus();
}
else if(target==bplus) {
buf=Double.parseDouble(textarea.getText());
textarea.setText("+");
textarea.requestFocus();
}
else if(target==bminus) {
buf=Double.parseDouble(textarea.getText());
textarea.setText("-");
textarea.requestFocus();
}
else if(target==biloczyn) {
buf=Double.parseDouble(textarea.getText());
textarea.setText("*");
textarea.requestFocus();
}
else if(target==biloraz) {
buf=Double.parseDouble(textarea.getText());
textarea.setText("/");
textarea.requestFocus();
}
else if(target==clear) {
textarea.setText("");
textarea.requestFocus();
}
else if(target==brow||target==textarea)
{
Proces = textarea.getText().substring(0,1);
x = Double.parseDouble(textarea.getText().substring(1));
if(Proces.compareTo("+") == 0) {
x = buf + x;
}//end if +
if(Proces.compareTo("-") == 0) {
x = buf - x;
}//end if -
if(Proces.compareTo("*") == 0) {
x = buf * x;
}//end if *
if(Proces.compareTo("/") == 0) {
if(x != 0) {
x = buf / x;
}
else {
JOptionPane.showMessageDialog(null,"Nie wolno dzielić perzez zero!");
}//end if /
textarea.setText(Double.toString(x));
textarea.requestFocus();
}
}
}
void init() {
JFrame f=new JFrame();
Container c=f.getContentPane();
GridBagLayout gbl=new GridBagLayout();
GridBagConstraints gbc=new GridBagConstraints();
gbc.fill=GridBagConstraints.HORIZONTAL;
c.setLayout(gbl);
// pole tekstowe ---------------------------------------------------------------
textarea=new JLabel();
//textarea.addActionListener();
textarea.setHorizontalAlignment(JLabel.RIGHT);
gbc.gridx=0; gbc.gridy=0; gbc.gridwidth=6; gbc.ipadx=0; gbc.ipady=10; gbc.insets=new Insets(5,5,0,0);
gbl.setConstraints(textarea,gbc);
c.add(textarea);
// button cyfry "0" -----------------------------------------------------------
b0=new JButton ("0");
b0.addActionListener(this);
b0.setFocusable(false);
gbc.gridx=1; gbc.gridy=4; gbc.gridwidth=1; gbc.ipadx=0; gbc.ipady=0; gbc.insets=new Insets(5,0,0,0);
gbl.setConstraints(b0,gbc);
c.add(b0);
// button cyfry "1" -----------------------------------------------------------
b1=new JButton("1");
b1.addActionListener(this);
b1.setFocusable(false);
gbc.gridx=0; gbc.gridy=1; gbc.gridwidth=1; gbc.ipadx=50; gbc.ipady=0; gbc.insets=new Insets(5,5,0,0);
gbl.setConstraints(b1,gbc);
c.add(b1);
// button cyfry "2" -----------------------------------------------------------
b2=new JButton("2");
b2.addActionListener(this);
b2.setFocusable(false);
gbc.gridx=1; gbc.gridy=1; gbc.gridwidth=1; gbc.ipadx=50; gbc.ipady=0; gbc.insets=new Insets(5,0,0,0);
gbl.setConstraints(b2,gbc);
c.add(b2);
// button cyfry "3" -----------------------------------------------------------
b3=new JButton("3");
b3.addActionListener(this);
b3.setFocusable(false);
gbc.gridx=2; gbc.gridy=1; gbc.gridwidth=1; gbc.ipadx=0; gbc.ipady=0; gbc.insets=new Insets(5,0,0,10);
gbl.setConstraints(b3,gbc);
c.add(b3);
// button cyfry "4" -----------------------------------------------------------
b4=new JButton("4");
b4.addActionListener(this);
b4.setFocusable(false);
gbc.gridx=0; gbc.gridy=2; gbc.gridwidth=1; gbc.ipadx=0; gbc.ipady=0; gbc.insets=new Insets(5,5,0,0);
gbl.setConstraints(b4,gbc);
c.add(b4);
// button cyfry "5" -----------------------------------------------------------
b5=new JButton ("5");
b5.addActionListener(this);
b5.setFocusable(false);
gbc.gridx=1; gbc.gridy=2; gbc.gridwidth=1; gbc.ipadx=0; gbc.ipady=0; gbc.insets=new Insets(5,0,0,0);
gbl.setConstraints(b5,gbc);
c.add(b5);
// button cyfry "6" -----------------------------------------------------------
b6=new JButton ("6");
b6.addActionListener(this);
b6.setFocusable(false);
gbc.gridx=2; gbc.gridy=2; gbc.gridwidth=1; gbc.ipadx=0; gbc.ipady=0; gbc.insets=new Insets(5,0,0,10);
gbl.setConstraints(b6,gbc);
c.add(b6);
// button cyfry "7" -----------------------------------------------------------
b7=new JButton ("7");
b7.addActionListener(this);
b7.setFocusable(false);
gbc.gridx=0; gbc.gridy=3; gbc.gridwidth=1; gbc.ipadx=0; gbc.ipady=0; gbc.insets=new Insets(5,5,0,0);
gbl.setConstraints(b7,gbc);
c.add(b7);
// button cyfry "8" -----------------------------------------------------------
b8=new JButton ("8");
b8.addActionListener(this);
b8.setFocusable(false);
gbc.gridx=1; gbc.gridy=3; gbc.gridwidth=1; gbc.ipadx=0; gbc.ipady=0; gbc.insets=new Insets(5,0,0,0);
gbl.setConstraints(b8,gbc);
c.add(b8);
// button cyfry "9" -----------------------------------------------------------
b9=new JButton ("9");
b9.addActionListener(this);
b9.setFocusable(false);
gbc.gridx=2; gbc.gridy=3; gbc.gridwidth=1; gbc.ipadx=0; gbc.ipady=0; gbc.insets=new Insets(5,0,0,10);
gbl.setConstraints(b9,gbc);
c.add(b9);
// button zerowania treści/wyniku w polu tekstowym -----------------------------
clear =new JButton ("Wyczyść");
clear.addActionListener(this);
clear.setFocusable(false);
gbc.gridx=0; gbc.gridy=4; gbc.gridwidth=1; gbc.ipadx=0; gbc.ipady=0; gbc.insets=new Insets(5,5,0,0);
gbl.setConstraints(clear ,gbc);
c.add(clear );
// button usuwania treści w polu tekstowym -------------------------------------
bbackspace =new JButton ("Cofnij");
bbackspace.addActionListener(this);
bbackspace.setFocusable(false);
gbc.gridx=2; gbc.gridy=4; gbc.gridwidth=1; gbc.ipadx=0; gbc.ipady=0; gbc.insets=new Insets(5,0,0,10);
gbl.setConstraints(bbackspace,gbc);
c.add(bbackspace);
// button dodawania -----------------------------------------------------------
bplus=new JButton("+");
bplus.addActionListener(this);
bplus.setFocusable(false);
gbc.gridx=5; gbc.gridy=1; gbc.gridwidth=1; gbc.ipadx=0; gbc.ipady=0; gbc.insets=new Insets(5,0,0,0);
gbl.setConstraints(bplus,gbc);
c.add(bplus);
// button odejmowania ----------------------------------------------------------
bminus=new JButton("-");
bminus.addActionListener(this);
bminus.setFocusable(false);
gbc.gridx=5; gbc.gridy=2; gbc.gridwidth=1; gbc.ipadx=10; gbc.ipady=0; gbc.insets=new Insets(5,0,0,0);
gbl.setConstraints(bminus,gbc);
c.add(bminus);
// button mnożenia -----------------------------------------------------------
biloczyn=new JButton("*");
biloczyn.addActionListener(this);
biloczyn.setFocusable(false);
gbc.gridx=5; gbc.gridy=3; gbc.gridwidth=1; gbc.ipadx=0; gbc.ipady=0; gbc.insets=new Insets(5,0,0,0);
gbl.setConstraints(biloczyn,gbc);
c.add(biloczyn);
// button dzielenia ------------------------------------------------------------
biloraz=new JButton("÷");
biloraz.addActionListener(this);
biloraz.setFocusable(false);
gbc.gridx=5; gbc.gridy=4; gbc.gridwidth=1; gbc.ipadx=10; gbc.ipady=0; gbc.insets=new Insets(5,0,0,0);
gbl.setConstraints(biloraz,gbc);
c.add(biloraz);
// button "Wynik" prezentujący wynik działania ---------------------------------
brow=new JButton("Wynik");
brow.addActionListener(this);
brow.setFocusable(false);
gbc.gridx=5; gbc.gridy=5; gbc.gridwidth=1; gbc.ipadx=0; gbc.ipady=40; gbc.insets=new Insets(20,0,0,0);
gbl.setConstraints(brow,gbc);
c.add(brow);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setTitle("Kalkulator");
f.setVisible(true);
f.setSize(450, 330);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new KalkulatorSlowik2().init();
}
});
}
}