Mehrere JDialogs gleichzeitig offen

Status
Nicht offen für weitere Antworten.
H

hey-ho

Gast
Hallo,

ich hab da ein kleines Problem, welches mir gerade bei meiner Swing-Anwendung aufgefallen ist. Und zwar habe ich einen JDialog, den ich aufrufe, um neue Daten einzugeben. Dies geschieht entweder durch mein Menü oder durch ein Tastenkürzel (STRG+N). Klappt auch so ganz gut. Nur ist mir gerade eben aufgefallen, dass ich durch das Tastenkürzel STRG+N den Dialog mehrmals aufrufen kann, d.h. die Dialoge liegen dann gleichzeitig mehrmals übereinander, je nachdem, wie oft ich die Tastenkombination gedrückt habe. Dann muss ich diese Dialoge erst wieder alle nacheinander schliessen. Wie kann ich so etwas denn vermeiden, da dies ziemlich störend und nicht so gewollt ist? Also, wenn ein Dialog geöffnet ist, soll die Tastenkombination STRG+N nicht funktionieren.

Vielen Dank schonmal
hey-ho
 
H

hey-ho

Gast
Der Dialog ist modal...
Der Menüpunkt ist ja auch deshalb nicht zu erreichen. Ich vermute mal, dass es an dem Code für das STRG+N liegt, welches in meiner HauptFrame-Klasse drin steht.

Code:
import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;


public class HauptFrame extends JFrame implements AWTEventListener {
	
	private HauptMenue hauptmenue;
	
	JPanel hauptPanel;
	
	KalenderDaten kalenderDaten;
	
	
	
	public HauptFrame() {
		
		setSize(500, 400);
		
		// Frame auf dem Bildschirm zentrieren
		setLocationRelativeTo(getParent());
		
		kalenderDaten = new KalenderDaten();
		
		
		hauptPanel = new JPanel();
		hauptPanel.setLayout(new BorderLayout());
		
		add(BorderLayout.CENTER, hauptPanel);
		
		hauptmenue = new HauptMenue(this, kalenderDaten);
		setJMenuBar(hauptmenue);
		
		Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK);

		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		
		
	}
	
	
	
	public void eventDispatched(AWTEvent event) {
        if (event instanceof KeyEvent) {
            KeyEvent ke = (KeyEvent) event;
            if (ke.getKeyCode() == KeyEvent.VK_N && ke.isControlDown()) {
                new DialogNeuerTermin(this);
            }
        }
    } 
	

}
 
H

hey-ho

Gast
Danke für die schnelle Antwort. Das mit dem AWTEventListener ist mir hier im Forum empfohlen worden. Ich werde mir das mit den Key Bindings (InputMap/ActionMap) mal genauer anschauen...
 
H

hey-ho

Gast
Sorry, dass ich jetzt erst wieder schreibe, aber irgendwie komme ich mit den Key Bindings nicht so richtig weiter. Wo muss ich denn ActionMap/InputMap hinpacken, dass mein Programm auf die Tasteneingabe reagiert. Mein JFrame kann damit jedenfalls nichts anfangen.[/code]
 

GilbertGrape

Bekanntes Mitglied
Hallo,

ich denke, du musst sie an ein Panel hängen (oder eine andere Komponente, die von JComponent abgeleitet ist), also hauptPanel.getInputMap(...). Direkt beim JFrame gehts glaub ich nicht.
 
H

hey-ho

Gast
OK, ich hab das jetzt mal im Hauptframe an ein JPanel gehängt. Aber irgendwie klappt das noch nicht so richtig. Manchmal funktiniert es mit dem Tastenkürzel, aber manchmal passiert auch garnichts. Vielleicht könnt ihr euch das mal anschauen und mir Tipps geben, was ich falsch mache oder verbessern könnte.


Hier die Klasse mit dem Hauptframe:
Code:
import java.awt.BorderLayout;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;


public class HauptFrame extends JFrame {
	
	private HauptMenue hauptmenue;
	
	JPanel hauptPanel;
		
	
	
	public HauptFrame() {

		setSize(500, 400);
		
		// Frame auf dem Bildschirm zentrieren
		setLocationRelativeTo(getParent());
				
		ActionAddTermin actionAddTermin = new ActionAddTermin(this);
		
		hauptPanel = new JPanel();
		hauptPanel.setLayout(new BorderLayout());
		
		add(BorderLayout.CENTER, hauptPanel);
		
		hauptmenue = new HauptMenue(this, kalenderDaten);
		setJMenuBar(hauptmenue);
	
		
		// Key Binding so richtig???
		
		KeyStroke neuerTermin = KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK, true);
		
		hauptPanel.getInputMap().put(neuerTermin, "test");
		
		hauptPanel.getActionMap().put("test", actionAddTermin);

		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		
		
	}
	

}


Und hier noch die Action-Klasse für einen neuen Termin (Dialog):
Code:
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;


public class ActionAddTermin extends AbstractAction {
	
	HauptFrame hauptframe;
	
	
	public ActionAddTermin(HauptFrame hauptframe) {
		
		this.hauptframe = hauptframe;
		
		
		putValue(Action.NAME, "neue Person...      STRG-N");
		putValue(Action.SHORT_DESCRIPTION, "neuen Termin eingeben");
		putValue(Action.MNEMONIC_KEY, new Integer('n'));
    }

    public void actionPerformed(ActionEvent event) {
    	new DialogNeuerTermin(hauptframe);
    	//hauptframe.kalenderDaten.addTermin();
    }
    
  
}

Vielen Dank schon mal für eure tolle Hilfe...
 

Marco13

Top Contributor
Du mußt dir vielleicht im oben verlinkten Tutorial die Sache mit dem Focus nochtmal ansehen. Hab mich jetzt auch nocht nicht konkret DAmit beschäftigt, aber ... wenn man z.B. ein TextField in den Frame legt, dann ist da ja immer der Cursor (d.h. auch der Focus) drin - und dann reagiert er nichtmehr. Bei einem Menu sieht man den Focus glaubich: Wenn man "ALT" drückt, wird geht der Focus ins Menu, und man sieht dann einen Rahmen um den Menünamen.

Aber mit
hauptPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(neuerTermin, "test");
könnte es schon gehen.
 
H

hey-ho

Gast
Hmmm, hatte das mit den verschiedenen Focus-Einstellungen mal durchprobiert - leider ohne Erfolg. Da ging dann plötzlich garnichts mehr. Aber ich habe gerade etwas festgestellt. Und zwar wird die Action nur dann auch ausgelöst, wenn die N-Taste wieder losgelassen wird. Und da ich ja eine Tastenkombination aus STRG und N gleichzeitig drücken muss, kommt es wohl manchmal dazu, dass evtl. die STRG-Taste vor der N-Taste losgelassen wird, was dann die Action nicht auslöst. Das heisst, es müsste die Action ausgelöst werden, wenn beide Tasten gedrückt werden, und nicht wenn die N-Taste losgelassen wird. Pffff, werde wohl noch weiter rumprobieren und suchen müssen...
 

Marco13

Top Contributor
Schau dir mal den letzten parameter von http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/KeyStroke.html#getKeyStroke(int,%20int,%20boolean) an....
 
H

hey-ho

Gast
Grrr, warum bin ich da nicht selbst draufgekommen. Vielen Dank, jetzt funktioniert es, so wie ich es wollte. Ich werde mir das mit den verschiedenen Focus-Einstellungen nochmal genauer anschauen. Im Moment hab ich garnichts angegeben. Wenn mein Dialog über das Tastenkürzel geöffnet wurde, dann passiert beim weiteren Drücken von STRG+N nichts, also es werden keine weiteren Dialoge geöffnet. Prima. Vielen Dank für die schnelle Hilfe...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Swing Mehrere Ausgaben in JTextArea AWT, Swing, JavaFX & SWT 2
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
S Mehrere Tabellen Zellen gleichzeitig färben AWT, Swing, JavaFX & SWT 5
Apfelbaum2005 Swing JFrame mehrere JPanels mit unterschiedlichen Formen hinzufügen AWT, Swing, JavaFX & SWT 1
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
I Scene Builder - mehrere Seiten AWT, Swing, JavaFX & SWT 6
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
schoel27 Mehrere JButtons sollen das gleiche Event auslösen AWT, Swing, JavaFX & SWT 2
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
M mehrere jTextField untereinander AWT, Swing, JavaFX & SWT 1
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
M JavaFX JavaFX in mehrere Controller AWT, Swing, JavaFX & SWT 21
R mehrere buttons mit forschleife kreieren und individuell bearbeiten AWT, Swing, JavaFX & SWT 1
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
N Textdatei GUI, Text in Textarea anzeigen mehrere Zeilen AWT, Swing, JavaFX & SWT 1
temi JavaFX Mehrere Views mit Stage.setScene() oder mit Scene.setRoot()? AWT, Swing, JavaFX & SWT 7
P Swing Mehrere JPanels auf ein JFrame hinzufügen? AWT, Swing, JavaFX & SWT 2
T Swing Tetraeder - mehrere Punkte verbinden? - Ansätze gesucht AWT, Swing, JavaFX & SWT 2
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 29
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 0
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
K Mehrere Linien zeichnen AWT, Swing, JavaFX & SWT 8
J JavaFX - mehrere Views, Model durchreichen AWT, Swing, JavaFX & SWT 10
it_is_all Swing Mehrere JComboBoxen - wie die versch. Boxen mit ItemStateChange auslesen? AWT, Swing, JavaFX & SWT 3
M Swing Mehrere Textfelder mit ScrollBars - Größe der Felder AWT, Swing, JavaFX & SWT 0
W JavaFX Mehrere Klassen in ein TableView AWT, Swing, JavaFX & SWT 6
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
L JavaFX Mehrere JavaFX Szenen mit einem Menü AWT, Swing, JavaFX & SWT 1
D Java FXML mehrere Fenster AWT, Swing, JavaFX & SWT 4
F JavaFX Mehrere Stages "managen" AWT, Swing, JavaFX & SWT 2
r4w Changelistener auf mehrere Textfelder AWT, Swing, JavaFX & SWT 5
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
S Swing Mehrere Modal-Dialoge übereinander AWT, Swing, JavaFX & SWT 5
T 2D-Grafik JFreeChart mehrere Y-Achsen AWT, Swing, JavaFX & SWT 2
C JavaFX mehrere Kreise nach Eingabeprozess ausgeben AWT, Swing, JavaFX & SWT 2
Thallius Swing Mehrere tausend "Panels" erstellen AWT, Swing, JavaFX & SWT 3
C Java FX Warnmeldung: Mehrere Fonts gehören derselben Familie und Stil AWT, Swing, JavaFX & SWT 2
J Mehrere JInternalFrame; GetValues AWT, Swing, JavaFX & SWT 1
JG12111989 mehrere Polyline-Objekte zeichnen AWT, Swing, JavaFX & SWT 3
LexeB4F JTable mehrere Zelle selektieren und inhalte Löschen.. Ideen gesucht AWT, Swing, JavaFX & SWT 1
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
K JavaFX Mehrere Cell Editors in einem TreeView Item AWT, Swing, JavaFX & SWT 2
KaffeeFan mehrere JTextField durchlaufen AWT, Swing, JavaFX & SWT 4
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
T Dynamisch mehrere Checkboxen anlegen AWT, Swing, JavaFX & SWT 2
G JavaFX Menü und mehrere Scenes AWT, Swing, JavaFX & SWT 16
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
D Mehrere RadiButtons auswählar AWT, Swing, JavaFX & SWT 3
P Swing JTable mehrere Zeilen markieren AWT, Swing, JavaFX & SWT 1
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
T JavaFX FXMLController für mehrere FXML? AWT, Swing, JavaFX & SWT 7
G mehrere Action-Abfolgen erfassen AWT, Swing, JavaFX & SWT 6
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
X Swing JPanel mehrere Ebenen zeichnen AWT, Swing, JavaFX & SWT 13
J Mehrere Hyperlinks "stilvoll" darstellen. AWT, Swing, JavaFX & SWT 1
G Mehrere Strings um Kreis zeichnen und positionieren AWT, Swing, JavaFX & SWT 0
S JavaFX Mehrere TreeTableView's synchron scrollen AWT, Swing, JavaFX & SWT 0
U Mehrere Oberflächeninstanzen seperat schließen AWT, Swing, JavaFX & SWT 5
J Rahmen um mehrere GUI Einzelteile AWT, Swing, JavaFX & SWT 2
S Layouts, mehrere Buttons nebeneinander AWT, Swing, JavaFX & SWT 2
M Mehrere Fenster innerhalb einer Application AWT, Swing, JavaFX & SWT 3
T Über mehrere Panel zeichnen AWT, Swing, JavaFX & SWT 2
M ActionListener für mehrere Klassen AWT, Swing, JavaFX & SWT 4
T [LWJGL] mehrere Displays? AWT, Swing, JavaFX & SWT 19
SexyPenny90 Mehrere Fenster AWT, Swing, JavaFX & SWT 2
M Handling 1 Fenster mehrere Panels AWT, Swing, JavaFX & SWT 2
Y Mehrere JSlider verlinken AWT, Swing, JavaFX & SWT 6
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
O Swing JLabel mehrere Zeilen AWT, Swing, JavaFX & SWT 2
P mehrere Rectangles per JButton AWT, Swing, JavaFX & SWT 9
B JToolBar dynamisch auf mehrere Zeilen erweitern AWT, Swing, JavaFX & SWT 2
Jats Zeichen auf mehrere JPanels AWT, Swing, JavaFX & SWT 7
G Mehrere Probleme mit Java's GUI AWT, Swing, JavaFX & SWT 6
G Mehrere Layoutprobleme AWT, Swing, JavaFX & SWT 2
Kenan89 JTable mehrere ListSelections AWT, Swing, JavaFX & SWT 2
M TextArea über mehrere Zeilen - wie Zeileanzahl abfragen? AWT, Swing, JavaFX & SWT 5
J Swing JDialog blokiert mehrere JFrames - soll aber nur den aufrufenden blockieren AWT, Swing, JavaFX & SWT 4
A mehrere Zeilen in GUi ausgeben AWT, Swing, JavaFX & SWT 2
N Mehrere Tasks nacheinander ausführen AWT, Swing, JavaFX & SWT 7
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
propra Mehrere Objekte gleichzeitig verschieben AWT, Swing, JavaFX & SWT 7
M 2D-Grafik Mehrere Linien (nacheinander) übereinander Zeichnen AWT, Swing, JavaFX & SWT 6
M Mehrere JPanel nacheinander?! AWT, Swing, JavaFX & SWT 11
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
K SWT Mehrere Einträge ins Clipboard legen AWT, Swing, JavaFX & SWT 2
C Swing Ein JFrame mehrere Ansichten AWT, Swing, JavaFX & SWT 8
C Swing Mehrere JSlider sollen aufeinander reagieren AWT, Swing, JavaFX & SWT 4
GUI-Programmer JFilechooser, mehrere Datein selektieren und Reihenfolge (2) AWT, Swing, JavaFX & SWT 8
S Mehrere JLists - Wie kennzeichnen? AWT, Swing, JavaFX & SWT 2
S Swing MVC Ein JFrame, mehrere JPanels AWT, Swing, JavaFX & SWT 6
J Mehrere JRadioButtons, aber nur 1 darf ausgewählt sein AWT, Swing, JavaFX & SWT 4
L Swing Mehrere Button die selbe Größe AWT, Swing, JavaFX & SWT 4
B AWT mehrere Fenster schließen AWT, Swing, JavaFX & SWT 8
I Wie mehrere JComboBoxen in Abhängigkeit einer anderen Box ändern? AWT, Swing, JavaFX & SWT 8
G mehrere JPanel in ein (vertikales) JScrollPane AWT, Swing, JavaFX & SWT 8
F Swing Mehrere Textfelder in Scrollpane einfügen und dann zum Scrollen bringen? AWT, Swing, JavaFX & SWT 4
GianaSisters Swing jTable - Feldtext soll mehrere Zeilen haben AWT, Swing, JavaFX & SWT 3
K JFileChooser mehrere Dateien markieren ohne STRG AWT, Swing, JavaFX & SWT 4
D Mehrere JTabel in einem Frame positionieren AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben