Dzięki, poprawiłem i jest ok;) Przy okazji jeszcze zapytam chociaż wiem, że to trochę odbiega od tematu wątku, jednak dotyczy tego samego kodu. W zadaniu jest powiedziane
Na ocenę programu decydujący wpływ będzie miała jakość kodu źródłowego — m.in. prawidłowe zdefiniowanie odpowiednich klas (np. klasy odpowiadającej za główne okno programu, czy klasy odpowiadającej za panel z licznikiem).
Nie wiem czy ten kod spełnia warunki zadania, w treści mowa jest o jakiś klasach(klasa odpowiadająca za panel z licznikiem), ale też nie bardzo wiem jaki jest cel ich robienia i jak to zrobić, wydaje mi się że w ten sposób jest w miarę optymalnie i prosto i przejrzyście. Oto całość kodu:
Kopiuj
package suma;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Suma {
public static void main(String[] args) {
JFrame okienko = new JFrame("Suma");
JLabel s1 = new JLabel("0");
JLabel s2 = new JLabel("0");
JButton s1_inc = new JButton("+");
JButton s2_inc = new JButton("+");
JButton s1_dec = new JButton("-");
JButton s2_dec = new JButton("-");
JButton s1_zeruj = new JButton("zeruj");
JButton s2_zeruj = new JButton("zeruj");
JButton suma = new JButton("suma");
JPanel panelGlowny = new JPanel();
panelGlowny.setLayout(new BorderLayout());
okienko.getContentPane().add(panelGlowny);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2, 4));
//pierwszy wiersz
panel.add(s1_dec);//1kol
panel.add(s1);//2kol
panel.add(s1_inc);//3kol
panel.add(s1_zeruj);//4kol
//drugi wiersz
panel.add(s2_dec);//1kol
panel.add(s2);//2kol
panel.add(s2_inc);//3kol
panel.add(s2_zeruj);//4kol
panelGlowny.add(panel, BorderLayout.CENTER);
panelGlowny.add(suma, BorderLayout.SOUTH);
okienko.pack();
okienko.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
okienko.setVisible(true);
Inc inc_s1 = new Inc(s1);
Inc inc_s2 = new Inc(s2);
Dec dec_s1 = new Dec(s1);
Dec dec_s2 = new Dec(s2);
Zero zero_s2 = new Zero(s2);
Zero zero_s1 = new Zero(s1);
Dodaj dodaj = new Dodaj(s1, s2);
s1_inc.addActionListener(inc_s1);
s2_inc.addActionListener(inc_s2);
s1_dec.addActionListener(dec_s1);
s2_dec.addActionListener(dec_s2);
s1_zeruj.addActionListener(zero_s1);
s2_zeruj.addActionListener(zero_s2);
suma.addActionListener(dodaj);
}
}
class Inc implements ActionListener{
private JLabel skladnik;
public Inc(JLabel skladnik) {
this.skladnik = skladnik;
}
@Override
public void actionPerformed(ActionEvent e) {
skladnik.setText(Integer.toString(Integer.parseInt(skladnik.getText())+1));
}
}
class Dec implements ActionListener{
private JLabel skladnik;
public Dec(JLabel skladnik) {
this.skladnik = skladnik;
}
@Override
public void actionPerformed(ActionEvent e) {
skladnik.setText(Integer.toString(Integer.parseInt(skladnik.getText())-1));
}
}
class Zero implements ActionListener{
private JLabel skladnik;
public Zero(JLabel skladnik) {
this.skladnik = skladnik;
}
@Override
public void actionPerformed(ActionEvent e) {
skladnik.setText("0");
}
}
class Dodaj implements ActionListener{
private JLabel s1;
private JLabel s2;
private int suma;
public Dodaj(JLabel s1, JLabel s2) {
this.s1 = s1;
this.s2 = s2;
}
@Override
public void actionPerformed(ActionEvent e) {
suma = Integer.parseInt(s1.getText()) + Integer.parseInt(s2.getText());
JOptionPane.showMessageDialog(null, "Suma liczników: "+Integer.toString(suma), "Suma", JOptionPane.INFORMATION_MESSAGE);
}
}