Swing Klasse erbt von JDialog - Problem mit innerer ActionListener-Klasse

Namphiz

Mitglied
Hallo,

ich habe folgendes Problem. Ich habe eine Klasse geschrieben, die von JDialog erbt. Dort habe ich unter anderem einen JButton ("OK") erstellt. Wenn man nun auf diesen Button klickt, soll der JDialog geschlossen werden.

Nun habe ich folgendes Problem. Ich wollte eine innere Klasse schreiben, die eben für diese Schließen-Operation zuständig ist. Sie implementiert das ActionListener-Interface. Allerdings meckert Eclipse herum und ich kann anscheinend keine innere Klasse schreiben.

Der (vereinfachte) Code dazu:
Java:
import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ApacheMenu extends JDialog {

	private JPanel pnlMenu;
        private JButton btnOK;
	
	private int buttonWidth = 200;
	private int buttonHeight = 50;
	
	public ApacheMenu(JFrame owner) {
		super(owner, true);
		
		setTitle("Apache Menu");
		setResizable(false);
		
		createWidgets();
		setupInteractions();
		initWidgets();
		
		pack();
		
	}
	
	private void setupInteractions() {
		
	}
	
	private void initWidgets() {
		getContentPane().setLayout(new BorderLayout());
		getContentPane().add(pnlMenu, BorderLayout.CENTER);
		

		pnlMenu.add(btnOK);
		
	}
	
	private void createWidgets() {
		pnlMenu = new JPanel();
		pnlMenu.setLayout(new BoxLayout(pnlMenu, BoxLayout.Y_AXIS));
		
               // ANDERE WIDGETS, WELCHE ICH JETZT HIER MAL ENTFERNT HABE.
		
		btnOK = new JButton("OK");
		btnOK.setAlignmentX(CENTER_ALIGNMENT);
		btnOK.setMinimumSize(new Dimension(buttonWidth, buttonHeight));
		btnOK.setMaximumSize(new Dimension(buttonWidth, buttonHeight));
	}
	
        // HIER MECKERT ECLIPSE!
	private class CloseDialogAction() implements ActionListener {

		@Override
                public void actionPerformed(ActionEvent e) {
                       // CODE DER DAS JDIALOG SCHLIEßT.
                } 
	}
	
}

Ich hoffe ihr könnt mir helfen!

LG!
 

Schandro

Top Contributor
mach die
Code:
()
in Zeile 59 weg.

Generell wäre für sowas eine anonyme Klasse schöner weil kompakter.
 

hdi

Top Contributor
Richtig, und falls du nicht weißt was eine anonyme Klasse ist: Die definierst du innerhalb eines tieferen Code-Blocks (also nicht unmittelbar im Rumpf der Klasse sondern zB in einer Methode), und erstellst in diesem Zuge eine (und die einzige) Instanz davon:

Java:
// in der createWidgets():
btnOK = new JButton("OK");
btnOK.setAlignmentX(CENTER_ALIGNMENT);
btnOK.setMinimumSize(new Dimension(buttonWidth, buttonHeight));
btnOK.setMaximumSize(new Dimension(buttonWidth, buttonHeight));
btnOk.addActionListener(new ActionListener(){
     @Override
     public void actionPerformed(ActionEvent e){
           dispose();
     }
});

PS: Ich weiß zwar nicht was genau da in den Dialog noch reinkommen soll, aber die Klasse JOptionPane kennst du oder?
 

Namphiz

Mitglied
Danke für die Antworten! Ohne euch hätte ich da wohl noch lange dran gesessen.

Danke nochmals für den Vorschlag von dispose(); für das Schließen des Fensters. Da hätte ich als nächstes noch nach suchen müssen.

PS: Ich weiß zwar nicht was genau da in den Dialog noch reinkommen soll, aber die Klasse JOptionPane kennst du oder?

Noch nicht so wirklich. Muss ich nochmal alles in der API Doc nachlesen.

EDIT: Da sollen noch weitere Widgets in den Dialog. Sonst würde ich JOptionPane nehmen.

PS: Ich hab mit deinem Kurs gelernt, hdi. ;) Die Klasse ist auch durch ein Video von dir inspiriert. Hab ich jetzt mal ganz dreist übernommen. ;)

Mir entzieht sich der Grund WARUM ApacheMenu von JDialog erbt?

Das habe ich so gemacht, weil diese Klasse nur ein Nebenmenü darstellt. Ich wollte die Klasse vom Haupt-Frame auslagern. Der Übersicht halber.
 
Zuletzt bearbeitet:

hdi

Top Contributor
Die Klasse ist auch durch ein Video von dir inspiriert. Hab ich jetzt mal ganz dreist übernommen.
Ui, jetzt aber aufpassen was du hier sagst, nicht dass du hier meinen Ruf in den Keller ziehst! :bae: Ne aber ernsthaft, welches Video liegt dem zu Grunde? Oder meinst du einfach das hier:

createWidgets();
setupInteractions();
addWidgets();

Fällt mir auch erst jetzt auf wo du sagst dass du meinen Kurs kennst. Daumen hoch dafür ;) Wobei du das ja "initWidgets" nennst. Was ist genau der Unterschied zwischen create und init? In meinem Video heißt das addWidgets und ist dafür da die Widgets auf dem Container zu platzieren.

Wegen JDialog / JOptionPane: Wird in meinem Kurs behandelt in Video 85: Dialog-Fenster
 
Zuletzt bearbeitet:

Namphiz

Mitglied
Wobei du das ja "initWidgets" nennst. Was ist genau der Unterschied zwischen create und init? In meinem Video heißt das addWidgets und ist dafür da die Widgets auf dem Container zu platzieren.

Wegen JDialog / JOptionPane: Wird in meinem Kurs behandelt in Video 85: Dialog-Fenster

Create erstellt die Widgets. Und Init soll sie quasi starten/adden. Aber eigentlich könnte ich sie auch addWidgets() nennen.

Wie oben gerade noch editiert. Da sollen noch weitere Widgets in den Dialog. Deshalb JDialog.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H MouseAdapter Klasse nutzen wenn eigene Klasse bereits von anderer erbt AWT, Swing, JavaFX & SWT 13
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
_user_q Versionscode aus build.gradle in Java-Klasse ausgeben lassen AWT, Swing, JavaFX & SWT 14
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
T JavaFX TableColumn in separate Klasse auslagern AWT, Swing, JavaFX & SWT 7
Monokuma KeyEvent in der Canvas Klasse AWT, Swing, JavaFX & SWT 0
B Was würden Profis an meiner Klasse verbessern? AWT, Swing, JavaFX & SWT 1
B JavaFX Verständnisfrage EventHandler<ActionEvent> Implementierung in meiner Klasse AWT, Swing, JavaFX & SWT 2
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
S Stream API, Anonyme Klasse AWT, Swing, JavaFX & SWT 8
B JavaFX Von welcher Klasse und zu welchem Zeitpunkt werden Event-Objekte erstellt? AWT, Swing, JavaFX & SWT 3
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
F Jtree aus Klasse mit Arraylisten AWT, Swing, JavaFX & SWT 1
L Javafx Controller Klasse in Maven AWT, Swing, JavaFX & SWT 7
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
J Bild von anderer Klasse will nicht laden AWT, Swing, JavaFX & SWT 1
L CardLayout in einer Klasse? AWT, Swing, JavaFX & SWT 2
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
ralfb1105 Swing Ausführung einer SwingWorker Klasse stoppen AWT, Swing, JavaFX & SWT 4
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J JFram Location aus Konstruktor einer anderen Klasse auslesen AWT, Swing, JavaFX & SWT 10
J 2D-Grafik Background Image Klasse AWT, Swing, JavaFX & SWT 14
K Frame aus anderer Klasse schließen AWT, Swing, JavaFX & SWT 3
M Eigene Klasse mit Grafikobjekten schreiben AWT, Swing, JavaFX & SWT 4
0 Swing JTable aus anderer Klasse updaten AWT, Swing, JavaFX & SWT 5
it_is_all Event Handling ActionListener in anderer Klasse klappt nicht AWT, Swing, JavaFX & SWT 4
L JavaFX button über andere Klasse ändern AWT, Swing, JavaFX & SWT 7
K über Button andere Java Klasse aufrufen AWT, Swing, JavaFX & SWT 15
C Nach Aufruf von anderer Klasse streikt Grafik AWT, Swing, JavaFX & SWT 1
S per Button Variableninhalt aus anderer Klasse holen AWT, Swing, JavaFX & SWT 3
F AWT Robot Klasse Screenshot nach Pixelmustern in bestimmten Radius um Bildschirmmittelpunkt absuchen AWT, Swing, JavaFX & SWT 13
K JButton auf anderer Klasse AWT, Swing, JavaFX & SWT 6
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9
Java_RY AWT Frame in eine eigene klasse auslagern und aufrufen AWT, Swing, JavaFX & SWT 6
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
J JTextfield automatisch aus zweiter Klasse aktualisieren AWT, Swing, JavaFX & SWT 5
J JavaFX Tableview Daten hinzufügen aus anderer Klasse AWT, Swing, JavaFX & SWT 7
Ghostman1711 GUI Java von Klasse mit Application Windows anderes Application Window aufrufen AWT, Swing, JavaFX & SWT 6
K JTable in extra Klasse, Zugriff in einer anderen klasse nicht möglich AWT, Swing, JavaFX & SWT 26
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
N JavaFX Erweitern der Line(Shape)-Klasse AWT, Swing, JavaFX & SWT 1
T Durch klicken eines Buttons Klasse wechseln AWT, Swing, JavaFX & SWT 2
7 JavaFX Verwendung einer ResizableCanvas-Klasse in fxml-Datei AWT, Swing, JavaFX & SWT 3
A JavaFX Von Klasse auf Controller Inhalt zugreifen AWT, Swing, JavaFX & SWT 9
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
J Eigene Klasse auf Basis Textfield in SceneBuilder anzeigen AWT, Swing, JavaFX & SWT 4
B Swing Auf JList-Elemente aus einer anderen Klasse zugreifen AWT, Swing, JavaFX & SWT 1
J JavaFX Mehrfache Benutzung von Methoden einer Klasse AWT, Swing, JavaFX & SWT 17
B Jlabel Text von anderen Klasse aus ändern AWT, Swing, JavaFX & SWT 9
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
N JavaFX GUI Elemente einer anderen (FXML)Klasse ansprechen AWT, Swing, JavaFX & SWT 16
O JTabeddpane aber jedes JPanel als eigene Klasse anlegen AWT, Swing, JavaFX & SWT 7
B Swing GUI in einer anderen Klasse aufrufen AWT, Swing, JavaFX & SWT 4
B Klasse mit ArrayList AWT, Swing, JavaFX & SWT 1
G Event Handling Event Handling in eigene Klasse AWT, Swing, JavaFX & SWT 4
W Paint-Methode in anderer Klasse funktioniert nicht AWT, Swing, JavaFX & SWT 7
L JavaFX Verständnisfrage zu JavaFX FXML und Controller-Klasse AWT, Swing, JavaFX & SWT 1
T Generische Klasse in JList über DefaultListModel AWT, Swing, JavaFX & SWT 1
D Event Handling Aus einer anderen Klasse heraus einen Text des JLabels ändern. AWT, Swing, JavaFX & SWT 12
F Instanzierung einer inneren Klasse in Klasse eines anderen Packets AWT, Swing, JavaFX & SWT 3
C JavaFX Zugriff auf TextField aus einer anderen Klasse AWT, Swing, JavaFX & SWT 4
A JavaFX Scene Builder eigene Klasse hinzufügen AWT, Swing, JavaFX & SWT 2
S 2 Paint-Methoden in einer Klasse ? AWT, Swing, JavaFX & SWT 2
D JavaFX Controller Klasse splitten? AWT, Swing, JavaFX & SWT 16
S JComboBox aus anderer Klasse füllen (Java-Swing) AWT, Swing, JavaFX & SWT 0
S ActionListener Klasse aufrufen AWT, Swing, JavaFX & SWT 4
M Swing JTextField getText Mehtode übergeben in eine Klasse zu einer Rechnung AWT, Swing, JavaFX & SWT 1
M Panel in geerbter JFrame Klasse adden AWT, Swing, JavaFX & SWT 4
F JavaFX Zugriff auf Controller Methode von einer normalen Klasse aus AWT, Swing, JavaFX & SWT 4
D AWT Das ganze GUI in eine Klasse? AWT, Swing, JavaFX & SWT 1
C JavaFX Klasse wird nicht als public erkannt AWT, Swing, JavaFX & SWT 6
J zwei Paint methoden in einer Klasse AWT, Swing, JavaFX & SWT 3
V kann ich in einer Klasse stage und scene deklarieren, aber in anderen Klassen Inhalte hinzufügen ? AWT, Swing, JavaFX & SWT 5
V JavaFX, Pane construktor von einer Klasse in der Main verwenden. AWT, Swing, JavaFX & SWT 4
S 2 paint-Methoden in einer Klasse ? AWT, Swing, JavaFX & SWT 2
W JavaFX Label in Controller-Klasse in einer anderen Controller-Klasse ändern AWT, Swing, JavaFX & SWT 9
X buttons aus externe klasse lesen? AWT, Swing, JavaFX & SWT 3
D Swing JTable- Meine Tabelle der Klasse JTable wird nur bedingt angezeigt AWT, Swing, JavaFX & SWT 4
M Gui in einer anderen Java Klasse aufrufen AWT, Swing, JavaFX & SWT 1
A Problem mit JFrame in separater Klasse AWT, Swing, JavaFX & SWT 3
A Swing bei Auswahl und klick eines JComboBox buttons die Klasse eines anderen Projekts aufrufen AWT, Swing, JavaFX & SWT 3
C Swing MenuBar als eigene Klasse AWT, Swing, JavaFX & SWT 4
D Nächste GUI in einer anderen Klasse aufrufen AWT, Swing, JavaFX & SWT 7
A Swing JTextArea aus anderer Klasse in realtime aktualisieren AWT, Swing, JavaFX & SWT 3
JavaInBrain Swing Rückgabe aus MouseListener-Klasse AWT, Swing, JavaFX & SWT 3
J Swing Nach SwingWorker Funktion aus der GUI Klasse aufrufen AWT, Swing, JavaFX & SWT 5
G JPanel aufrufen in andere Klasse AWT, Swing, JavaFX & SWT 2
G Window aus anderer Klasse aufrufen AWT, Swing, JavaFX & SWT 4
S klasse einbinden funktioniert nicht AWT, Swing, JavaFX & SWT 6
M JDialog übergibt eingaben nicht an aufrufende klasse AWT, Swing, JavaFX & SWT 15
B Zugriff auf JFrame obwohl die Klasse abgeleitet ist AWT, Swing, JavaFX & SWT 3
M Swing Array aus anderer Klasse AWT, Swing, JavaFX & SWT 6
bluerob Problem beim Image zeichnen via andere Klasse AWT, Swing, JavaFX & SWT 7
J ActionListener per Innere Klasse oder e.getActionCommand() if-Abfrage? AWT, Swing, JavaFX & SWT 12
X Swing Panel Extra Klasse & Aufruf über Button AWT, Swing, JavaFX & SWT 18

Ähnliche Java Themen

Neue Themen


Oben