Witam. Jestem początkującym "programistą" Javy. Chciałem napisać tak dla zabawy prosty programik (okienkowy) w którym podajemy ilość posiadanej gotówki i on automatycznie liczyłby nam np. ile za te pieniądze możemy kupić np. piw. Poniżej daję link do całego programu (razem z obrazkami itp):
http://www.speedyshare.com/files/29753062/Piwosz.rar
A tutaj kod źródłowy wrzucam:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.ImageIcon;
public class Piwosz extends JFrame{
JMenuItem zamknij;
JMenuItem informacje;
JMenuItem autor;
JTextField kasa;
JButton policz;
JLabel tekst;
JLabel tytul;
JLabel piwko;
ImageIcon obrazek_tytulowy;
JLabel lech;
JLabel warka;
JLabel tyskie;
JLabel zubr;
JLabel zywiec;
JLabel tatra;
JLabel harnas;
ImageIcon piwo_lech;
ImageIcon piwo_warka;
ImageIcon piwo_tyskie;
ImageIcon piwo_zubr;
ImageIcon piwo_zywiec;
ImageIcon piwo_tatra;
ImageIcon piwo_harnas;
public ActionListener al = new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource() == zamknij){
dispose();
}
else if(e.getSource() == policz){
String kasioreczka = kasa.getText();
int kasiorka = Integer.parseInt(kasioreczka);
oblicz(kasiorka);
}
}
};
public Piwosz(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout(FlowLayout.CENTER, 0, 10));
JMenuBar mb = new JMenuBar();
JMenu menu = new JMenu("Menu główne");
zamknij = new JMenuItem("Zamknij program");
informacje = new JMenuItem("Informacje o programie");
autor = new JMenuItem("Autor programu");
menu.add(informacje);
menu.add(autor);
menu.add(zamknij);
mb.add(menu);
setJMenuBar(mb);
zamknij.addActionListener(al);
obrazek_tytulowy = new ImageIcon("images/obrazek_tytulowy.png");
piwko = new JLabel(obrazek_tytulowy);
kasa = new JTextField(10);
policz = new JButton("Oblicz ilość piw");
policz.addActionListener(al);
tekst = new JLabel();
tytul = new JLabel();
tytul.setText("Piwosz v1.0 made by M.Kowalik");
tekst.setText("Podaj jaką dysponujesz ilością gotówki (w PLN):");
add(piwko);
add(tytul);
add(tekst);
add(kasa);
add(policz);
setSize(320, 540);
setResizable(false); //blokada pomniejszania/powiekszania okienka
setVisible(true);
}
public double oblicz(int forsa){
//ponizej zeny piw. Oczywiscie zmyślone i przypadkowe.
double cenaLecha = 3.10;
double cenaZubra = 3.15;
double cenaTatry = 2.90;
double cenaTyskiego = 2.50;
double cenaZywca = 2.95;
double cenaWarki = 2.45;
double cenaHarnasia = 2.85;
double ileLechow = forsa / cenaLecha;
double ileZubrow = forsa / cenaZubra;
double ileTatr = forsa / cenaTatry;
double ileTyskich = forsa / cenaTyskiego;
double ileZywcow = forsa / cenaZywca;
double ileWark = forsa / cenaWarki;
double ileHarnasi = forsa / cenaHarnasia;
int iloscLechow = (int) ileLechow;
int iloscZubrow = (int) ileZubrow;
int iloscTatr = (int) ileTatr;
int iloscTyskich = (int) ileTyskich;
int iloscZywcow = (int) ileZywcow;
int iloscWark = (int) ileWark;
int iloscHarnasi = (int) ileHarnasi;
piwo_lech = new ImageIcon("images/lech.gif");
piwo_zubr = new ImageIcon("images/zubr.gif");
piwo_tatra = new ImageIcon("images/tatra.gif");
piwo_tyskie = new ImageIcon("images/tyskie.gif");
piwo_zywiec = new ImageIcon("images/zywiec.gif");
piwo_warka = new ImageIcon("images/warka.gif");
piwo_harnas = new ImageIcon("images/harnas.gif");
lech = new JLabel("Piwo Lech: " + iloscLechow + " sztuk", piwo_lech, JLabel.CENTER);
zubr = new JLabel("Piwo Żubr: " + iloscZubrow + " sztuk", piwo_zubr, JLabel.CENTER);
tatra = new JLabel("Piwo Tatra: " + iloscTatr + " sztuk", piwo_tatra, JLabel.CENTER);
tyskie = new JLabel("Piwo Tyskie: " + iloscTyskich + " sztuk", piwo_tyskie, JLabel.CENTER);
zywiec = new JLabel("Piwo Żywiec: " + iloscZywcow + " sztuk", piwo_zywiec, JLabel.CENTER);
warka = new JLabel("Piwo Warka: " + iloscWark + " sztuk", piwo_warka, JLabel.CENTER);
warka = new JLabel("Piwo Harnaś: " + iloscHarnasi + " sztuk", piwo_harnas, JLabel.CENTER);
add(lech);
add(zubr);
add(tyskie);
add(tatra);
add(zywiec);
add(warka);
setVisible(true);
return 0;
}
public static void main(String args[]){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Piwosz();
}
});
}
}
Ale może do rzeczy:
Jak widzimy program raczej działa, jednak jest taki problem, że tylko raz. Dokładniej mówiąc gdy wpiszemy w pole tekstowe ilosc naszej gotowki i wcisniemy klawisz "Oblicz" to wyświetla nam poprawne dane. Jednak, gdy chcemy zmienić wartość w polu tekstowym lub wpisać coś innego - już nic sie nie dzieje ani nie zmienia. Dlaczego?