Hi,
(sorry für den Titel. Ich wusste es nicht besser zu umschreiben :roll: )
Wieder einmal ein Problemchen ;-)
Ich habe derzeit folgende Klassen (irrelevanten Code habe ich mal rausgeholt).
So. In der letzten Klasse steht es ja schon.
Wenn ich also in den IF-Zweig komme, dann soll ein Icon auf dem Label m_warningNumCaps in der Klasse LoginView angezeigt werden, ansonsten ein Icon in der StatusBar. ( beim Login gibt es noch keine StatusBar :idea: ).
Ich weiß jetzt nicht, wie ich das am cleversten mache. Ich könnte nuatürlich an die Klasse 'DefaultPasswordNumCapsStateHandler' eine Referenz der Klasse 'LoginView' übergeben, aber ist das wirklich 'gut'?
Ich streube mich irgendwie gegen diese Methode.
Ich danke euch für Hilfe und Ratschläge.
Grüße Ben ;-)
(sorry für den Titel. Ich wusste es nicht besser zu umschreiben :roll: )
Wieder einmal ein Problemchen ;-)
Ich habe derzeit folgende Klassen (irrelevanten Code habe ich mal rausgeholt).
Code:
public class MyPasswordField extends JPasswordField
{
private PasswordNumCapsStateHandler m_passwordNumCapsHandler = new DefaultPasswordNumCapsStateHandler();
public void setPasswordNumCapsHandler( PasswordNumCapsStateHandler passPasswordNumCapsHandler )
{
m_passwordNumCapsHandler = passPasswordNumCapsHandler;
}
public PasswordNumCapsStateHandler getPasswordNumCapsHandler()
{
return m_passwordNumCapsHandler;
}
public void setStatusbarIcon( Icon statusbarIcon )
{
//
}
}
Code:
final class LoginView extends JFrame
{
private XYZPasswordField m_txtPasswort = new XYZPasswordField(24);
// Vorbelegung des Labels mit einem transparenten GIF
private JLabel m_warningNumCaps = new JLabel(XYZRessourceLoader.getImageIcon(XYZRessourceLoader.IMG_HOOK_INVERS));
m_txtPasswort.setPasswordNumCapsHandler( new DefaultPasswordNumCapsStateHandler() );
m_txtPasswort.addKeyListener( new KeyListener()
{
public void keyReleased( KeyEvent e )
{
if ( ( e.getKeyCode() == KeyEvent.VK_CAPS_LOCK )
||
( e.getKeyCode() == KeyEvent.VK_NUM_LOCK ))
{
m_txtPasswort.getPasswordNumCapsHandler().onNumCapsStateChange( 1 );
}
}
public void keyPressed( KeyEvent e )
{}
public void keyTyped( KeyEvent e )
{}
});
}
public void setNumCapsWarning( Icon numCapsIcon )
{
m_warningNumCaps.setIcon( numCapsIcon );
}
}
Code:
public class DefaultPasswordNumCapsStateHandler implements PasswordNumCapsStateHandler
{
public void onNumCapsStateChange( int status )
{
if( status == 1 )
{
// Irgendwie muss das Icon ja im LoginView angezeigt werden. Frage: wie mache ich das
// geschickt? Referenz an DefaultPasswordNumCapsStateHandler übergeben kann ja nicht
// 'geschickt' sein, oder?
}
else
{
((XYZParentFrame) App.getApplicationController().getWindowManager().getMDIParent()).
addTrayComponent( XYZRessourceLoader.getImageIcon(XYZRessourceLoader.ALARM) );
}
}
}
So. In der letzten Klasse steht es ja schon.
Wenn ich also in den IF-Zweig komme, dann soll ein Icon auf dem Label m_warningNumCaps in der Klasse LoginView angezeigt werden, ansonsten ein Icon in der StatusBar. ( beim Login gibt es noch keine StatusBar :idea: ).
Ich weiß jetzt nicht, wie ich das am cleversten mache. Ich könnte nuatürlich an die Klasse 'DefaultPasswordNumCapsStateHandler' eine Referenz der Klasse 'LoginView' übergeben, aber ist das wirklich 'gut'?
Ich streube mich irgendwie gegen diese Methode.
Ich danke euch für Hilfe und Ratschläge.
Grüße Ben ;-)