Wyłączenei przycisku po pierwszym kliknięciu

0

witam, mam taki problem,
nasluchuje czy nacisnieto przycisk, jak nacisnieto, to mam cos wykonac, wykonuje i jest ok, ale jak juz raz nacisnalem przycisk, to nie chce po raz drugi tam wchodzic, w jaki sposob moge wylaczyc nasluchiwanie lub w jaki sposob zrobic aby przycisk byl nieaktywny.

mam taki kod:

JButton start = new JButton("Start");

Container c = getContentPane();
c.setLayout(new FlowLayout());

c.add(start);

start.addActionListener( new ActionListener()
	{
	public void actionPerformed (ActionEvent e)
		{
                     // tu bym chcial przestać nasluchiwac lub dezaktywować przycisk start.
		}
	});

Ktos moze cos doradzic??

0
start.setEnabled(false)

Metoda w klasie JComponent po ktorej posrednio dziedziczy JButton.

http://java.sun.com/j2se/1.5.0/docs/api/ - tutaj masz wszystko.

0

pewnie coś w stylu:

start.removeListener(this); ?

ewentualnie zmienna statyczna w listenerze, którą przestawiasz na powiedzmy false, gdy nie chcesz już nasłuchiwać i w zależności od tego, jaką ma wartość albo wykonujesz kod, albo nie...

0

BTW nie wiem czy ten kod co wkeiles to jest umieszczony w konstruktorze. Bo jesli tak to JButton albo musi byc finalne albo przeniesione na do klasy jako private JButton start. Chyba ze napiszesz osobna klase sluchacza.

ps: sorrki za podwojny post

0

jakby ktos potrzebował, to wyłącza się tak:

przycisk.removeActionListener(this);

:D

a przy okazji pisze program który zlicza liczby, ma dzialac jako aplet i aplikacja, wsio mi dziala, ale w pewnej chwili program ma spytac, czy powtorzyc czynnosc, ustawilem zdarzenia do przyciskow ale nie bardzo wiem, jak dla przycisku TAK potwornie zainicjowac aplet :( tak samo, przy wyborze NIE dziala mi tylko jezeli pracuje jako aplikacja, jako aplet nie dziala, robie to tak:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Liczby extends JApplet
{
/*
private JButton jeszczeRazTak = new JButton ("Tak");
private JButton jeszczeRazNie = new JButton ("Nie");

*/

public void init()
	{
	try
		{
		UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
		}
	catch (Exception e) {};

/*

tu jest caly kod

*/

	jeszczeRazTak.addActionListener( new ActionListener()
		{
		public void actionPerformed (ActionEvent e)
			{
			// tu chcialbym aby inicjowac aplet jeszcze raz
			}
		});

	jeszczeRazNie.addActionListener( new ActionListener()
		{
		public void actionPerformed (ActionEvent e)
			{
			System.exit(0);// tu powinno mi konczyc, dziala jak program pracuje jako aplikacja
			}
		});
	}


public static void main(String [] args)
	{
	int szerokosc = 300, wysokosc = 350;
	JFrame oknoAplikacji = new JFrame ("Liczby");
	oknoAplikacji.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	Liczby egzApletu = new Liczby();

	egzApletu.init();
	egzApletu.start();

	oknoAplikacji.getContentPane().add(egzApletu);
	oknoAplikacji.setSize(szerokosc, wysokosc);
	oknoAplikacji.setVisible(true);
	oknoAplikacji.setResizable(false);
	}
}

ktos moze powiedziec, jak jeszcze raz zainicjowac aplet??

0

Z Twoje go kodu wynika, że inicjując applet ustawiasz L&F i dodajesz obsługę akcji. Więc po co chcesz ponownie to robić ?

0

mam zrobic program, ktory bedzie powtarzal jeszcze raz czynnosc, po kliknieciu na tak, lub sie wylaczal po kliknieciu na nie, takie zalozenie, dodatkowo ma dzialac jako aplet lub aplikacja,

btw, co znaczy L&F??

1 użytkowników online, w tym zalogowanych: 0, gości: 1