Witam, mam taki o to problem: chciałbym zrobić w grze tzw reset, czy chcesz zagrac jeszcze raz? itp.
problem polega na tym ze gdy zeruje program w taki sposób:
((Button)p1).setLabel(" ");
((Button)p2).setLabel(" ");
p1.setBackground(Color.white);
p2.setBackground(Color.white);
((Button)p1).setActionCommand("p1");
((Button)p1).addActionListener(this);
((Button)p2).setActionCommand("p2");
((Button)p2).addActionListener(this);
to po kilku próbach tak jakby przyciski przyciskaja sie podwójnie i zamiast kółka jest krzyżyk lub odwrotnie, czasem widac że zmiana następuje podwójnie. wydaje mi sie że bufor się nie czyści, jeśli mam racje , jak to poprawić?
tu skrócony kod programu( chce dodać przycisk reset, lub resetować w przypaku wygranej, to nie ważne, ważne czemu pobiera podwojne przyciśnięcie?):
public class KolkoKrzyzyk extends JFrame implements ActionListener {
public Component p1;
public Component p2;
public Container p;
String kto = ("O");
int fontSize=40;
public Font font=new Font("Helvetica", Font.BOLD, fontSize);
public Font font2=new Font("Helvetica", Font.HANGING_BASELINE, 100);
String gracz="p1";
String ruch="ruch oddaje: ";
public KolkoKrzyzyk(){
Dol.setLayout(new GridLayout(1,5,1,5));
Dol.add(lab2);
add(Dol, BorderLayout.SOUTH);
setSize(450, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p = new Panel();
p.setLayout(new GridLayout(3, 3, 10, 10));
p.setBackground(Color.black);
add(p, BorderLayout.WEST);
p1 = (new Button(" "));
p2 = (new Button(" "));
p1.setBackground(Color.white);
p2.setBackground(Color.white);
p1.setFont(font2);
p2.setFont(font2);
p.add(p1);
p.add(p2);
((Button)p1).setActionCommand("p1");
((Button)p1).addActionListener(this);
((Button)p2).setActionCommand("p2");
((Button)p2).addActionListener(this);
Container cp = getContentPane();
cp.add(p);
setVisible(true);
}
public static void main(String[] args) {
new KolkoKrzyzyk();
}
public void actionPerformed(ActionEvent zrodlo) {
String polecenie = zrodlo.getActionCommand();
String cmd= zrodlo.getActionCommand();
if (polecenie.equals("p1")) {
((Button)p1).setLabel(kto);
((Button)p1).removeActionListener(this);
}
} else if (polecenie.equals("p2")) {
((Button)p2).setLabel(kto);
((Button)p2).removeActionListener(this);
}
}
}