Button soll nach dem er gedrückt wurde auf setVisible(false) gestellt werden.

Rufus.Mueller

Bekanntes Mitglied
Frage siehe Titel. Man sollte meinen das wäre trivial, bisher ist es mir aber nicht gelungen. Ich schreib' in die Methode actionPerformed()

Java:
meinButton.setVisible(false);

Leider bleibt er trotzdem sichtbar. Ich vermute stark, dass ich zusätzlich


Java:
 myFrame.validate();


ausführen muss. Aber ich kann von der Methode aus nicht auf den Frame zugreifen. Mit this. erreiche ich bloß den ActionListener. Ich habe versucht, eine Klasse zu schreiben die ActionListener implmentiert und den frame als Parameter übergeben bekommt. Das hat aber nicht funktioniert
 
validate oder ähnliches ist nicht notwendig, aber falls du es dennoch mal brauchst: Klassename.this.methodenname sollte gehen in dem Fall.
Zu deinem Problem:
Was heißt es ist dir nicht gelungen? Was passiert? Sicher dass du es auf dne richtigen Button aufrufst? Fliegt eine Exception? etc.

Java:
	public static void main(String[] args) throws Exception {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				JFrame frame = new JFrame();
				JPanel panel = new JPanel();
				final JButton meinButton = new JButton("Mein Button");
				meinButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						meinButton.setVisible(false);
					}
				});
				panel.add(meinButton);
				frame.add(panel);
				frame.pack();
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.setLocationRelativeTo(null);
				frame.setVisible(true);
			}
		});
	}

???:L
 
Nein, keine Exception, soweit bin ich gar nicht gekommen. Ein normaler ActionListener hat ja gar keinen Parameter, ich hätte aber einen gebraucht. Das hab' ich bereits nicht hinbekommen, weil ich ja das interface hätte implementieren müssen (wie die Schnittstelle des interface verändern?).

Aber Du hast mir eine viel einfachere und bessere Möglichkeit gezeigt, nämlich die:


Java:
Klassename.this.button1.setVisible(false);


Funktioniert wunderbar.
 
Den gedrückten Button bekommst du auch per
Code:
e.getSource()
 

Zurück
Oben