sirconflex
Grünschnabel
hi,
ich möchte einen Taschenrechner für Complexe Zahlen erstellen. Dabei hakt es bei der Umsetzung der GUI in Awt.(speziell Event Handling)
Ich habe bereits eine Klasse geschrieben die die GUI verwalten soll, habe dabei von Frame abgeleitet und diverse buttons und 2 Textfelder eingefügt.
Soweit so gut. Nun gibt es bei den Complexen Zahlen einen Realteil und einen Imaginärteil, dies wollte ich so regeln, das durch 2 Textfelder, die Eingabe gewährleistet wird.Damit ich nicht alle Buttons doppelt machen muss( ....), habe ich mir gedacht das nur in ein Textfeld geschrieben werden kann, wenn eines der Textfelder markiert ist(focus). Hab also den FocusListener verwendet, und über eine boolsche Variable die Markierung gespeichert.
Nu hab ich aber das Problem das 1. wenn ich auf einen Button drücke, mein textfeld wieder focus_lost markiert wird...
2. hab ich die if-abfrage in den Konstruktor geschrieben, nachdem FocusListener... dann läuft er zwar durch aber die Knöpfe dann nicht mehr(wie auch).
Hat jemand da eine elegante Lösung wie ich das bewerkstelligen könnte, das wenn ich einen Button drücke nur in dem ausgewählten Textfeld die Zahl erscheint.
Danke im Vorraus
MFG
Sirc
ich möchte einen Taschenrechner für Complexe Zahlen erstellen. Dabei hakt es bei der Umsetzung der GUI in Awt.(speziell Event Handling)
Ich habe bereits eine Klasse geschrieben die die GUI verwalten soll, habe dabei von Frame abgeleitet und diverse buttons und 2 Textfelder eingefügt.
Soweit so gut. Nun gibt es bei den Complexen Zahlen einen Realteil und einen Imaginärteil, dies wollte ich so regeln, das durch 2 Textfelder, die Eingabe gewährleistet wird.Damit ich nicht alle Buttons doppelt machen muss( ....), habe ich mir gedacht das nur in ein Textfeld geschrieben werden kann, wenn eines der Textfelder markiert ist(focus). Hab also den FocusListener verwendet, und über eine boolsche Variable die Markierung gespeichert.
Nu hab ich aber das Problem das 1. wenn ich auf einen Button drücke, mein textfeld wieder focus_lost markiert wird...
2. hab ich die if-abfrage in den Konstruktor geschrieben, nachdem FocusListener... dann läuft er zwar durch aber die Knöpfe dann nicht mehr(wie auch).
Hat jemand da eine elegante Lösung wie ich das bewerkstelligen könnte, das wenn ich einen Button drücke nur in dem ausgewählten Textfeld die Zahl erscheint.
Code:
realteil.addFocusListener(new FocusListener()
//realteil und imaginärteil sind meine textfields
{
public void focusGained(FocusEvent fe1)
{
if(realteil.hasFocus())
{
realflagon = true;
realteil.setText("true");
}
}
public void focusLost(FocusEvent fe2)
{
realflagon = false;
realteil.setText("false");
}
}
);
//----------------------------------------------------------------------
imaginärteil.addFocusListener(new FocusListener()
{
public void focusGained(FocusEvent fe3)
{
imagflagon = true;
imaginärteil.setText("true");
}
public void focusLost(FocusEvent fe4)
{
imagflagon = false;
imaginärteil.setText("false");
}
}
);
//----------------------------------------------------------------------
if(realflagon == true)
{
number1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae1)
{
realteil.setText(realteil.getText() + "1");
//number1.removeActionListener(this);
}
}
);
number2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae2)
{
realteil.setText(realteil.getText() + "2"); //number2.removeActionListener(this);
}
}
);
}
//-----------------------------------------------------------------------------
if (imagflagon == true)
{
number1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae3)
{
imaginärteil.setText(imaginärteil.getText() + "1");
}
}
);
number2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae4)
{
imaginärteil.setText(imaginärteil.getText() + "2"); //number2.removeActionListener(this);
}
}
);
}
Danke im Vorraus
MFG
Sirc