Fehler beim Aufrufen von Dialog aus ActionListener

Status
Nicht offen für weitere Antworten.

spacegaier

Mitglied
Hallo zusammen,

ich habe wieder ein Problem. Ich habe ein Frame mit einem Menü. Dieses Menü soll jetzt auf Klicks reagieren. Dazu habe ActionListener eingebaut. Nun it aber das Problem, dass das Programm immer abstürzt (oder Eclipswe will zumindest in die Debug-Ansicht) wenn ich im ActionListener einen
Dialog als Reaktion aufrufen will. Das gleiche Proiblem hatte ich auch, wenn ich anstatt dem Dialog z.B. direkt einen neuen Eintrag in meine Taelle (welche in dem Frame auch liegt) machen möchte.

Ich poste jetzt mal den Code, den ich für relevant halte. Wenn ihr mehr braucht melden.

ActionListener (der prizipiell funktioniert, da er z.B. dsa System.exit(0); ausführt):
Das frame bei NewEntryDialog ist am Anfang der Klasse definiert: private MainFrame frame;

Code:
public void actionPerformed(ActionEvent evt)
	{
		String command = evt.getActionCommand();
		
		if(command.equals("NEW"))
			new NewEntryDialog(frame);

		else if(command.equals("EXIT"))
			System.exit(0);	
	}

Die Dialog-Klasse:

Code:
public class NewEntryDialog extends JDialog 
{
	private static final long serialVersionUID = 1L;
	

	public NewEntryDialog(MainFrame frame)
	{
		super(frame, "Neuen Eitnrag anlegen", false);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		JLabel titel = new JLabel("Titel");
		
		this.add(titel);
		this.pack();
		this.setVisible(true);
	}
}
 
S

SlaterB

Gast
Fehlermeldung?
vollständiges Programm (fehlt nur noch einfaches JFrame mit Button)?
 

spacegaier

Mitglied
Falsch ausgedrückt: Das Programm läuft weiter, aber in Eclipse kommt die Warnung/Fehler Source not found und der Reiter heißt EventDispatchThread.run() line: not available
 
S

SlaterB

Gast
etwas, was man kopieren und starten kann,

möglichst nur diesen Code den du schon gepostet hast,
aber eben noch das notwende JFrame drumherum + Button + main-Operation usw.,
ein kleines Testprogramm
 

spacegaier

Mitglied
Achso...okay...no problem.

NewEntryDialog.java:

Code:
import javax.swing.JDialog;
import javax.swing.JLabel;

public class NewEntryDialog extends JDialog 
{
	private static final long serialVersionUID = 1L;
	

	public NewEntryDialog(MainFrame frame)
	{
		super(frame, "Neuen Eitnrag anlegen", false);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		JLabel titel = new JLabel("Titel");
		
		this.add(titel);
		this.pack();
		this.setVisible(true);
	}
}

MainMenu.java:

Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

import smdb.gui.NewEntryDialog;

public class MainMenu extends JMenuBar implements ActionListener
{
	private static final long serialVersionUID = 1L;
	
	private MainFrame frame;
	
	public MainMenu(MainFrame frame)
	{
		JMenu file 	= new JMenu("Datei");
		JMenu edit 	= new JMenu("Edit");
		JMenu help	= new JMenu("Hilfe");
		
		JMenuItem open 	= new JMenuItem("Datenbank öffnen");
		open.setActionCommand(MainFrame.EActions.OPEN.name());
		open.addActionListener(this);
		JMenuItem close	= new JMenuItem("Datenbank schließen");
		close.setActionCommand(MainFrame.EActions.CLOSE.name());
		close.addActionListener(this);
		JMenuItem exit 	= new JMenuItem("Programm verlassen");
		exit.setActionCommand(MainFrame.EActions.EXIT.name());
		exit.addActionListener(this);
		exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.CTRL_MASK));
		
		JMenuItem new_entry 	= new JMenuItem("Neuer Eintrag");
		new_entry.setActionCommand(MainFrame.EActions.NEW.name());
		new_entry.addActionListener(this);
		new_entry.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
		JMenuItem delete_entry 	= new JMenuItem("Eintrag löschen");
		delete_entry.setActionCommand(MainFrame.EActions.DELETE.name());
		delete_entry.addActionListener(this);
		delete_entry.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, ActionEvent.CTRL_MASK));
		JMenuItem edit_entry 	= new JMenuItem("Eintrag berarbeiten");
		edit_entry.setActionCommand(MainFrame.EActions.EDIT.name());
		edit_entry.addActionListener(this);
		edit_entry.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, ActionEvent.CTRL_MASK));
		
		JMenuItem info = new JMenuItem("Info");
		info.setActionCommand(MainFrame.EActions.INFO.name());
		info.addActionListener(this);
		
		file.add(open);
		file.add(close);
		file.addSeparator();
		file.add(exit);
		
		edit.add(new_entry);
		edit.add(delete_entry);
		edit.add(edit_entry);
		
		help.add(info);
		
		add(file);
		add(edit);
		add(help);
		
		
	}
	
	public void actionPerformed(ActionEvent evt)
	{
		String command = evt.getActionCommand();
		
		if(command.equals("NEW"))
			new NewEntryDialog(frame);

		else if(command.equals("EXIT"))
			System.exit(0);	
	}

}

MainFrame.java:

Code:
import java.awt.Insets;
import java.awt.Toolkit;
import javax.swing.JFrame;

import smdb.gui.MainMenu;

public class MainFrame extends JFrame
{
	private static final long serialVersionUID = 1L;
	private MainMenu mainMenu;
	public enum EActions
	{
		OPEN,
		CLOSE,
		EXIT,
		NEW,
		DELETE,
		EDIT,
		INFO;
	}	
	
	public MainFrame()
	{
		this.setTitle("SheetMusicDataBase 1.0");
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
			
		Insets inset = Toolkit.getDefaultToolkit().getScreenInsets(this.getGraphicsConfiguration());
				
		int screenWidth  = Toolkit.getDefaultToolkit().getScreenSize().width;
		int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
		
		int sizeW = screenWidth  - (inset.left + inset.right);
		int sizeH = screenHeight - (inset.top  + inset.bottom);
		
		this.setSize(sizeW, sizeH);
		this.setLocation(0,0);
				
		mainMenu = new MainMenu(this);
		this.setJMenuBar(mainMenu);
				
		this.setVisible(true);
	}
}

Main.java:

Code:
import smdb.gui.MainFrame;

public class Main 
{
	public static void main(String[] args) 
	{
		new MainFrame();
	}

}

Alles mit import smdb.* sind meine eigenen packages.

Hoffe das hilft weiter.
 
S

SlaterB

Gast
das nennst du ein kurzes Programm?
ist es dir nicht möglich, z.B. alle anderen MenuItems zu entfernen?
verstehe ich nie..

naja, ich hab zu Hause nur Java 1.4, da musste ich eh mindestens die Enums entfernen, habe es dann gleich gekürzt auf

Code:
public class MainFrame extends JFrame {
	private MainMenu mainMenu;

	public MainFrame() {

		setDefaultCloseOperation(EXIT_ON_CLOSE);
		mainMenu = new MainMenu(this);
		this.setJMenuBar(mainMenu);
		setSize(400, 400);
		setVisible(true);
	}
	public static void main(String[] args) {
		new MainFrame();
	}
}

class MainMenu extends JMenuBar implements ActionListener {
	private static final long serialVersionUID = 1L;

	private MainFrame frame;

	public MainMenu(MainFrame frame) {
		JMenu edit = new JMenu("Edit");

		JMenuItem new_entry = new JMenuItem("Neuer Eintrag");
		new_entry.setActionCommand("NEW");
		new_entry.addActionListener(this);
		new_entry.setAccelerator(
			KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));

		edit.add(new_entry);
		add(edit);
	}

	public void actionPerformed(ActionEvent evt) {
		String command = evt.getActionCommand();

		if (command.equals("NEW")) {
			new NewEntryDialog(frame);
		}
	}
}

class NewEntryDialog extends JDialog {
	private static final long serialVersionUID = 1L;

	public NewEntryDialog(MainFrame frame) {
		super(frame, "Neuen Eitnrag anlegen", false);
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		JLabel titel = new JLabel("Titel");

		getContentPane().add(titel);
		pack();
		setVisible(true);
	}
}

in dem Dialog musst ich
getContentPane().add(titel);
statt
add(titel)
setzen, was bei alter Java-Version typisch ist, sonst kein Fehler zu erkennen

funktioniert die gekürzte Version bei dir, deine aber immer noch nicht?
keine Fehlermeldung?
starte das Programm von der Konsole, dann kann kein Debug-Modus als Ausrede kommen ;)
 

spacegaier

Mitglied
Das mit von der Konsole starten habe ich noch nie hinbekommen :( . Wäre net, wenn das mal jemand anderes hier machen könnte.

Wenn ich es aber in eine .exe umwandeln lasse und diese ausführe kann ich so oft ich will auf den Menüeintrag klicken, es passiert nix. Ebenso asl .jar.
 
S

SlaterB

Gast
tritt denn nun der Fehler auch in meiner Kurzversion auf?
vielleicht liegt er ja ganz woanders
 

spacegaier

Mitglied
Ja, ich habe gerade deine Version in .jar un .xe umgesetz und probiert (meine lange habe ich so noch gar nicht getestet).

Ich habe jetzt noch von Eclipse einen Screenshot gemacht, so wie es aussieht, wenn ich gerade vorher auf den besagten Menüpunkt geklickt habe und ich automatisch wieder in der IDE lande. Wie man sieht läuft mein Javaprogramm aber weiter (siehe Taskleiste).
Außerdem ist mir nun aufgefallen, dass er doch einen Fehler ausgibt und zwar unten im Debugfenster (ist mir vorher gar nicht aufgefallen; ich arbeite erst seit vier Tagen mit Java und somit auf mit Eclipse).
Dort steht folgendes (falls man es auf dem Screenshot nicht erkennen kann:
  • Thread [AWT-EventQueue-0] (Suspended (exception IllegalArgumentException))
    EventDispatchThread.run() line: not available
 

spacegaier

Mitglied
Und noch ein Fehler.....Aus der Konsolenausgabe....

  • Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: defaultCloseOperation must be one of: DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, or DISPOSE_ON_CLOSE
    at javax.swing.JDialog.setDefaultCloseOperation(Unknown Source)
    at NewEntryDialog.<init>(MainFrame.java:57)
    at MainMenu.actionPerformed(MainFrame.java:47)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
 

spacegaier

Mitglied
Okay...es lag an folgender Zeile:

Code:
this.setDefaultCloseOperation(EXIT_ON_CLOSE);

Einfach auskommentieren (in der Dialogklasse natürlch, nicht in der Frameklasse).

DANKE, für all eure Mühen !!! :toll:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Fehler beim Öffnen weiterer FXML AWT, Swing, JavaFX & SWT 11
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
A Fehler beim Hintergrund AWT, Swing, JavaFX & SWT 17
L JavaFX Fehler beim setzen von Farben AWT, Swing, JavaFX & SWT 16
Tronert JavaFX Fehler beim Ändern der font-weight AWT, Swing, JavaFX & SWT 7
Tommy135 JavaFX JavaFX Fehler beim Scenewechsel AWT, Swing, JavaFX & SWT 23
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
S Fehler beim Zweites 3D Bild AWT, Swing, JavaFX & SWT 2
L Fehler beim erstellen einer Tabelle mithilfe von 2d-Array AWT, Swing, JavaFX & SWT 3
J Fehler beim Einklappen eines Trees AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Fehler beim Laden eines Bildes AWT, Swing, JavaFX & SWT 25
K 2D-Grafik Fehler beim Farbe auslesen AWT, Swing, JavaFX & SWT 3
J Fehler beim Gif Datei öffnen AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Fehler beim Überzeichnen von Linien AWT, Swing, JavaFX & SWT 11
hdi Swing JTable: Fehler beim Nutzen von RowSorter#setRowFilter AWT, Swing, JavaFX & SWT 4
M Fehler beim Zugriff von awt-KeyListener auf swt-Shell AWT, Swing, JavaFX & SWT 2
P Fehler beim Einlesen eines JTextFields AWT, Swing, JavaFX & SWT 2
G Viele Fehler beim zeichen AWT, Swing, JavaFX & SWT 5
A Fehler beim Auslesen aus einem Textfeld AWT, Swing, JavaFX & SWT 2
P Fehler beim Verwenden von swt.jar mit NetBeans AWT, Swing, JavaFX & SWT 2
S Fehler beim Auslesen des Textes im textfield AWT, Swing, JavaFX & SWT 8
T Fehler beim Compilieren AWT, Swing, JavaFX & SWT 29
S Fehler beim addTextListener . AWT, Swing, JavaFX & SWT 2
hannibalstgt Fehler bei JCOMBOBOX GUI Anzeige AWT, Swing, JavaFX & SWT 4
J Fehler bei jFame.setTitle() AWT, Swing, JavaFX & SWT 8
thor_norsk SpringBoot-Fehler AWT, Swing, JavaFX & SWT 7
J Ich kriege eine Fehler Messesage bei meinem Media Player AWT, Swing, JavaFX & SWT 8
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
S JavaFX Fehler zwischen View und Controller bei MouseEvent (MVC) AWT, Swing, JavaFX & SWT 13
T ListView nach Erweiterung Fehler in CellFactory AWT, Swing, JavaFX & SWT 8
beli3ver JavaFX Anwendung startet nicht, kann den Fehler nicht finden (Exception in Application start method) AWT, Swing, JavaFX & SWT 1
J "Exception in thread "AWT-EventQueue-0"" Fehler AWT, Swing, JavaFX & SWT 3
parrot JavaFX Fehler AWT, Swing, JavaFX & SWT 4
H JavaFX JavaFX Import Fehler AWT, Swing, JavaFX & SWT 4
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
Z Swing Wert aus Textfeld auslesen -- null Fehler AWT, Swing, JavaFX & SWT 4
A eine Fehler AWT, Swing, JavaFX & SWT 9
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
W fillRect() in Schleife spukt nur Fehler aus AWT, Swing, JavaFX & SWT 3
S Fehler: Hauptklasse neon.Main konnte nicht gefunden oder geladen werden AWT, Swing, JavaFX & SWT 5
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
E Fehler bei Button AWT, Swing, JavaFX & SWT 1
L Unbekannter Fehler AWT, Swing, JavaFX & SWT 13
I Fehler bei Alert AWT, Swing, JavaFX & SWT 6
J Fehler bei PixelColor erkennung AWT, Swing, JavaFX & SWT 4
T Fehler bei ActionEvent? AWT, Swing, JavaFX & SWT 3
V Fehler bei Würfelsimulator GUI AWT, Swing, JavaFX & SWT 2
Z GUI-Problem, finde meinen Fehler nicht! AWT, Swing, JavaFX & SWT 11
Seikuassi SWING - (Hoffentlicher) simpler Color-Fehler AWT, Swing, JavaFX & SWT 4
M Swing finde den fehler nicht AWT, Swing, JavaFX & SWT 9
A Fehler bei erstellen eines JTextFields AWT, Swing, JavaFX & SWT 2
D Unlogischer Fehler? AWT, Swing, JavaFX & SWT 2
L Eclipse Fehler besser zu verstehen!!! AWT, Swing, JavaFX & SWT 4
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
H GUI-Textausgabe Fehler AWT, Swing, JavaFX & SWT 5
S String is null Fehler AWT, Swing, JavaFX & SWT 2
P Swing GroupLayout() Fehler? AWT, Swing, JavaFX & SWT 3
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
N Touchscreen-Scrollen, wo liegt der Fehler? AWT, Swing, JavaFX & SWT 3
N Fehler Inhalt von JTable wird gelöscht AWT, Swing, JavaFX & SWT 5
M GEF tutorial Fehler finden AWT, Swing, JavaFX & SWT 4
S Grafik Fehler AWT, Swing, JavaFX & SWT 15
M Fehler bei Arrayübergabe an JComboBox AWT, Swing, JavaFX & SWT 10
S LayoutManager Fehler gesucht 18.6.2011 AWT, Swing, JavaFX & SWT 4
C Fehler nur bei manchen Usern AWT, Swing, JavaFX & SWT 8
Screen Fehler bei Get-Methode für ArrayList AWT, Swing, JavaFX & SWT 8
K JFrame + KeyListener + Runnable = Fehler AWT, Swing, JavaFX & SWT 3
I Fehler bei JFileChooser AWT, Swing, JavaFX & SWT 2
E Swing Fehler nach Befüllen einer JTable mit gesetzem Rowsort?! AWT, Swing, JavaFX & SWT 10
P Swing Misteriöser Fehler JTable AWT, Swing, JavaFX & SWT 5
Y Swing JPasswordField Fehler AWT, Swing, JavaFX & SWT 14
A Swing Unknown Source Fehler AWT, Swing, JavaFX & SWT 9
N Fehler bei Grouplayout AWT, Swing, JavaFX & SWT 17
S ActionPerformed Fehler... AWT, Swing, JavaFX & SWT 9
C BufferedImage-Fehler? Falsches Bild wir gezeichnet AWT, Swing, JavaFX & SWT 5
A Tabellen Überschriften ändern -setColumnIdentifiers()- Fehler AWT, Swing, JavaFX & SWT 7
M.F.G. Fehler bei der Anzeige Grafischer Elemente AWT, Swing, JavaFX & SWT 13
D Swing Verwirrender Fehler AWT, Swing, JavaFX & SWT 7
J Fehler in fillRoundRect AWT, Swing, JavaFX & SWT 2
D Probleme mit Spiel-Engine. Komische Fehler. AWT, Swing, JavaFX & SWT 5
W fehler jedoch ka wo AWT, Swing, JavaFX & SWT 14
F Fehler in der Startklasse AWT, Swing, JavaFX & SWT 13
A Fehler bei der Parametereingabe? AWT, Swing, JavaFX & SWT 16
P finde den Fehler im JTable nicht AWT, Swing, JavaFX & SWT 2
Spin Fehler in Vergleich AWT, Swing, JavaFX & SWT 6
K Swing: ContentPane von JDialog ist transparent (Fehler) AWT, Swing, JavaFX & SWT 10
Dragonfire ZoomImage flackert -> Fehler: repaint-Aufruf [gelöst] AWT, Swing, JavaFX & SWT 5
T Invalid Range - Fehler bei TableRowSorter / Tabelle AWT, Swing, JavaFX & SWT 17
DasDogma Fehler bei getText() AWT, Swing, JavaFX & SWT 10
I Fehler bei verschachtelten JScrollPanes AWT, Swing, JavaFX & SWT 2
GilbertGrape Fehler bei HTML in JTextPane AWT, Swing, JavaFX & SWT 2
K Textfelder auslesen gibt immer Fehler AWT, Swing, JavaFX & SWT 2
D Fehler bei Button Array AWT, Swing, JavaFX & SWT 8
M Fehler mit Jigloo AWT, Swing, JavaFX & SWT 3
M setColor mit Fehler cannot fiend symbol (java.awt.Color) AWT, Swing, JavaFX & SWT 2
Z habe code, habe fehler, habe keine lösung AWT, Swing, JavaFX & SWT 7
R JComboBox Fehler AWT, Swing, JavaFX & SWT 7
B NPE-Fehler AWT, Swing, JavaFX & SWT 11
P JRadioButton in Schleife erstellen > wo liegt mein Fehler AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben