carookee - group communication for you
Home / JavaForum / Swing + AWT
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
4.985 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 322 von 1460 (22%) |<   <   >   >|

Autor Gast
Datum 18.07.03, 14:16
Betreff Re: Noch etwas zu meinem JDialog....


hallo,

das ist ein Focus-'Problem'. Da der Dialog standardmäßig niemals Focus bekommt wenn sich noch andere Komponenten darin befinden (was ja der Normalfall ist ;-) ) , dann verarbeitet der die auch nicht mehr.
du könntest das durch die Methode setFocusable(true) erreichen und mit setFocusCycleRoot(true); auch den Focus hin und herschalten. Da Du aber wohl eine Universallösung suchst, um Deinen Dialog zu schliessen unabhängig davon wer den Focus hat kannst Du mal folgendes probieren (Ich glaub da gibts auch noch andere Möglichkeiten, bin mir aber nicht sicher): überschreibe protected JRootPane createRootPane() in deinem Dialog und registriere entsprechende Action:
z.B:
import java.awt.event.*;
import javax.swing.*;

public class EscapeDialog extends JDialog
{
    public static void main(String[]args)
    {
        new EscapeDialog();
    }
    
    private JTextField input = null;
    
    public EscapeDialog()
    {
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        initTextField();
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
    
    private void initTextField()
    {
        input = new JTextField(10);
        getContentPane().add(input);
    }
    
    protected JRootPane createRootPane()
    {
        ActionListener exitListener = new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                dispose();
            }
        };
        JRootPane rootPane = new JRootPane();
        //Escape schließt den Dialog egal wer Focus hat!
         KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
        rootPane.registerKeyboardAction(exitListener, stroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
        
        return rootPane;
    }
    
}


Grüße,
Tim


Diskussionsverlauf:
JDialog mit KeyEvent... WARUM GEHT DAS NICHT....
    Noch etwas zu meinem JDialog....
        Re: Noch etwas zu meinem JDialog....
            Re: Noch etwas zu meinem JDialog....
            Re: Noch etwas zu meinem JDialog....

 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com