vfl_freak
Premium-User
Hallo zusammen,
ich kämpfe jetzt seit gestern morgen mit dem genannten Problem ....
Ich soll für etliche Fenster/Dialoge einbauen, dass sie sich per <ESC> schließen. Bei mehreren einzelnen Dialog-Klassen hat dies auch anstandslos geklappt.
Beispiel:
So weit - so gut 
Nun hat unsere Anwendung aber eine ganze Reihe Dialogfenster, die generisch über eine zentrale Klasse erstellt werden. Ich versuche es mal skizzenhaft darzustellen :
Ich hoffe, das war soweit verständlich ;-)
Ich habe dann die Klasse "DlgEditorGeneric" um einen KeyListener, so wie im ersten Beispiel beschrieben (also mit der Methode "keyPressed"), erweitert.
Aber dann meckerte der Compiler
Auch Versuche, das Ganze über das "interface IDlgEditorActions" resp. "DlgNewsEditableActions" zu lösen, klappen nicht!
Habe ich hier irgendwo einen Gedankenfehler?
Oder kann das alles aufgrund des Interface nicht klappen?
Bin im Moment ein bisschen ratlos und bitte um passende Denkanstöße
Danke und Gruß
Klaus
ich kämpfe jetzt seit gestern morgen mit dem genannten Problem ....
Ich soll für etliche Fenster/Dialoge einbauen, dass sie sich per <ESC> schließen. Bei mehreren einzelnen Dialog-Klassen hat dies auch anstandslos geklappt.
Beispiel:
Java:
public class MyDlg extends JDialog implements KeyListener
{
// ...
private void jbInit() throws Exception
{
addKeyListener(this);
// ...
}
// ...
public void keyPressed( KeyEvent event )
{
if( event.getKeyCode() == KeyEvent.VK_ESCAPE )
{
setVisible(false);
dispose();
}
} // keyPressed
}

Nun hat unsere Anwendung aber eine ganze Reihe Dialogfenster, die generisch über eine zentrale Klasse erstellt werden. Ich versuche es mal skizzenhaft darzustellen :
Java:
// Erezugen eine "News"-Dialogs über die generische Klasse "DlgEditorGeneric"
DlgEditorGeneric dlgN1 = new DlgNewsEditable( this, "News", DlgEditorGeneric.BUTTONMODE_SCHLIESSEN, false, iMaskenKNZ);
public class DlgNewsEditable
extends DlgEditorGeneric
{
public DlgNewsEditable()
{
setDialogFont(new java.awt.Font("Monospaced", 0, 13));
setButtonsEnabled(BUTTONMODE_SCHLIESSEN, false);
m_IDlgEditorActions = new DlgNewsEditableActions();
}
}
public class DlgNewsEditableActions
implements IDlgEditorActions
{
public DlgNewsEditableActions()
{}
public void writeData( DlgEditorGeneric theDlg, String strData )
{
// muss überschrieben werden !!
}
public void doubleClickedData( DlgEditorGeneric theDlg, String strData )
{
// muss überschrieben werden !!
}
public void dataChanged( DlgEditorGeneric theDlg )
{
// muss überschrieben werden !!
}
public String readData( DlgEditorGeneric theDlg )
{
String strData = "";
WSRequestNews wsc = new WSRequestNews();
byte[ ] bErg = wsc.communicate();
byte[] bRes = null;
if (bErg != null)
{
// irgendwas
}
return strData;
} // readData
}
/* Interface für Actions des generischen Dialogs. Abgeleitete Dialoge implementieren
* dieses Interface und müssen die Memberfunktionen überschreiben */
public interface IDlgEditorActions
{
public String readData(DlgEditorGeneric theDlg);
public void writeData(DlgEditorGeneric theDlg, String strData);
public void doubleClickedData(DlgEditorGeneric theDlg, String strData);
public void dataChanged(DlgEditorGeneric theDlg);
}
public abstract class DlgEditorGeneric extends JDialog
{
// ...
IDlgEditorActions m_IDlgEditorActions = null;
// ...
}
Ich habe dann die Klasse "DlgEditorGeneric" um einen KeyListener, so wie im ersten Beispiel beschrieben (also mit der Methode "keyPressed"), erweitert.
Aber dann meckerte der Compiler
Also habe ich diese Methode auch dort eingebaut .... leider ohne ErfolgDer Typ "DlgNewsEditable" muss die übernommene abstrakte Methode keyListener.keyPressed(KeyEvent) implementieren!
Auch Versuche, das Ganze über das "interface IDlgEditorActions" resp. "DlgNewsEditableActions" zu lösen, klappen nicht!
Habe ich hier irgendwo einen Gedankenfehler?
Oder kann das alles aufgrund des Interface nicht klappen?
Bin im Moment ein bisschen ratlos und bitte um passende Denkanstöße
Danke und Gruß
Klaus