vfl_freak
Premium-User
Guten Morgen,
ich schlage mich seit ein paar Tagen mit einem hartnäckigen Problem in einer neuen Klasse herum.
Zu Beginn der Anwendung wird ein spezieller Text in einem Dialogfenster angezeigt. Dieser Dialog besteht aus drei Panels: NORTH für eine Überschrift, CENTER für die TextArea und SOUTH für zwei Button (FAQ und Schliessen).
Damit dieser Dialog, wie viele andere auch bei uns, einfach durch Drücken der Leertaste geschlossen werden kann, habe ich dem Schliessen-Button den Fokus gegeben und ihn auch zum Default-Button gemacht. Da das alles nichts half, habe ich sogar einen KeyListener eingefügt, der bei Betätigen der Leertaste ein das Schliessen des Fenster anstossen soll ....
Nur leider klappt das nicht! Das Betätigen der Leertaste bleibt ohne jede Folge. Drücke ich dagegen auf <ENTER>, dann wird das Fenster auch geschlossen!
Hier mal der Code der Klasse:
Was manche ich hier falsch

Bei anderen Masken funktioniert das Zusammenspiel "requestFocus" und "setDefault" mit <SPACE> einwandfrei (zumindest glaubte ich bislang, dass es daran lag
)
Danke im voraus für Eure Ideen
Gruß
Klaus
ich schlage mich seit ein paar Tagen mit einem hartnäckigen Problem in einer neuen Klasse herum.
Zu Beginn der Anwendung wird ein spezieller Text in einem Dialogfenster angezeigt. Dieser Dialog besteht aus drei Panels: NORTH für eine Überschrift, CENTER für die TextArea und SOUTH für zwei Button (FAQ und Schliessen).
Damit dieser Dialog, wie viele andere auch bei uns, einfach durch Drücken der Leertaste geschlossen werden kann, habe ich dem Schliessen-Button den Fokus gegeben und ihn auch zum Default-Button gemacht. Da das alles nichts half, habe ich sogar einen KeyListener eingefügt, der bei Betätigen der Leertaste ein das Schliessen des Fenster anstossen soll ....
Nur leider klappt das nicht! Das Betätigen der Leertaste bleibt ohne jede Folge. Drücke ich dagegen auf <ENTER>, dann wird das Fenster auch geschlossen!
Hier mal der Code der Klasse:
Java:
public class DlgNKPermits
extends JDialog
implements KeyListener
{
Frame parentFrame = null;
Panel pnMain = new Panel();
JPanel jPanel1 = new JPanel();
JPanel jPanel2 = new JPanel();
JPanel jPanel3 = new JPanel();
BorderLayout borderLayout1 = new BorderLayout();
BorderLayout borderLayout2 = new BorderLayout();
BorderLayout borderLayout3 = new BorderLayout();
JButton btnSchliessen = new JButton();
JButton btnFAQ = new JButton();
JLabel jLabelHeadline = new JLabel();
JTextArea jTextBereich = new JTextArea();
byte[] bufNKPermits = null;
public DlgNKPermits( Frame frame, String title, boolean modal, byte[] dataBuf )
{
super(frame, title, modal);
parentFrame = frame;
bufNKPermits = dataBuf;
this.addKeyListener( this );
try
{
jbInit();
add( pnMain );
pack();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
private void jbInit() throws Exception
{
pnMain.setLayout( borderLayout1 );
jPanel1.setLayout( borderLayout2 );
jPanel1.setPreferredSize( new Dimension(650, 60) );
jPanel2.setLayout( borderLayout3 );
jPanel2.setPreferredSize( new Dimension(650, 490) );
btnFAQ.setMnemonic('F');
btnFAQ.setText("FAQ");
btnFAQ.setToolTipText( "Frequently Asked Questions" );
btnFAQ.setBackground( Color.YELLOW );
btnFAQ.addActionListener( new DlgNKPermits_BtnFAQ_actionAdapter(this) );
btnFAQ.setFocusable( false );
btnSchliessen.setText( "Schließen" );
btnSchliessen.setMnemonic('H');
btnSchliessen.addActionListener( new DlgNKPermits_BtnSchliessen_actionAdapter(this) );
btnSchliessen.requestFocus( true );
btnSchliessen.setSelected( true );
getRootPane().setDefaultButton( btnSchliessen );
jLabelHeadline.setBounds( new Rectangle(50, 50, 650, 40) );
jLabelHeadline.setText( "<HTML><b><FONT SIZE = 5> Übersicht über die Nutzungsklassen, die Sie bearbeiten dürfen:</FONT></b></HTML>" );
jTextBereich.setFont( new java.awt.Font("Monospaced", Font.BOLD, 15) );
jTextBereich.setText( "\n"
+ " | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9\n"
// ..... hier wird der Text ausgegeben !
);
jTextBereich.setEditable( false );
jTextBereich.requestFocus( false );
pnMain.add( jPanel1, BorderLayout.NORTH );
pnMain.add( jPanel2, BorderLayout.CENTER );
pnMain.add( jPanel3, BorderLayout.SOUTH );
jPanel1.add( jLabelHeadline );
jPanel2.add( jTextBereich, BorderLayout.CENTER );
jPanel3.add( btnFAQ, null );
jPanel3.add( Box.createRigidArea(new Dimension(60,0)) );
jPanel3.add( btnSchliessen, null );
if (parentFrame != null)
{
Dimension dlgSize = getPreferredSize();
Dimension parentfrmSize = parentFrame.getSize();
Point parloc = parentFrame.getLocation();
setLocation( (parentfrmSize.width - dlgSize.width - 560) / 2 + parloc.x,
(parentfrmSize.height - dlgSize.height - 800) / 2 + parloc.y );
}
} // jbInit
private char setPermit( byte cItem )
{
char cReturn;
if( cItem == 0 )
{
cReturn = '-';
}
else
{
cReturn = '#';
}
return cReturn;
}
void btnSchliessen_actionPerformed( ActionEvent e )
{
dispose();
}
void btnFAQ_actionPerformed( ActionEvent e )
{
String strKnz = "FAQWOR0032 ";
String sTitle = "Frequently Asked Questions";
DlgMemoEditorGeneric dlgFAQ = new DlgMemoFAQEditor( parentFrame, sTitle, strKnz,
DlgMemoEditorGeneric.BUTTONMODE_ABBRECHEN |
DlgMemoEditorGeneric.BUTTONMODE_UEBERNEHMEN, true);
dlgFAQ.setTextBackgroundColor( Color.white );
dlgFAQ.setSize(700, 750 );
dlgFAQ.setLocation( 350, 100 );
dlgFAQ.setTextEditable( true );
dlgFAQ.readData();
dlgFAQ.setVisible( true );
} // btnFAQ_actionPerformed
public void keyTyped( KeyEvent event )
{
int taste = event.getKeyCode( );
if( taste == KeyEvent.VK_SPACE )
{
// btnSchliessen.doClick( );
btnSchliessen_actionPerformed( null );
}
} // keyTyped
public void keyPressed( KeyEvent event )
{
} // keyPressed
public void keyReleased( KeyEvent event )
{
} // keyReleased
} // class DlgNKPermits
class DlgNKPermits_BtnFAQ_actionAdapter implements java.awt.event.ActionListener
{
DlgNKPermits adaptee;
DlgNKPermits_BtnFAQ_actionAdapter( DlgNKPermits adaptee )
{
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e)
{
adaptee.btnFAQ_actionPerformed(e);
}
} // class DlgNKPermits_jBtnSchliessen_actionAdapter
class DlgNKPermits_BtnSchliessen_actionAdapter implements java.awt.event.ActionListener
{
DlgNKPermits adaptee;
DlgNKPermits_BtnSchliessen_actionAdapter( DlgNKPermits adaptee )
{
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e)
{
adaptee.btnSchliessen_actionPerformed(e);
}
} // class DlgNKPermits_BtnSchliessen_actionAdapter
Was manche ich hier falsch


Bei anderen Masken funktioniert das Zusammenspiel "requestFocus" und "setDefault" mit <SPACE> einwandfrei (zumindest glaubte ich bislang, dass es daran lag

Danke im voraus für Eure Ideen

Gruß
Klaus
Zuletzt bearbeitet: