G
Guest
Gast
Servus,
ich hab folgendes Problem:
Ich will mit Java/AWT einen Button programmieren der folgendermaßen reagiert:
1- Der Button hat ursprünglich die Beschriftung "startGespräch"
2- wenn man dann auf den Button drückt soll folgendes passieren:
2.1- Die Buttonbeschriftung soll sich in "EndeGespräch" ändern.
2.2- Ein anderer Button soll deaktiviert werden.
2.3- Eine Methode soll aufgerufen werden (klappt schon)
3- Wenn man nun nochmal auf den Button klickt soll dann folgendes passieren:
3.1- Die Buttonbeschriftung soll sich in "StartGespräch" ändern.
3.2- Ein anderer Button soll aktiviert werden.
3.3- Eine Methode soll aufgerufen werden (klappt schon)
Also im Prinzip will ich das ButtonLayout "on the fly" im ActionListener ändern (was mir NullPointerExceptions wirft).
Ausserdem sollen für einen Button zwei unterschiedliche Listener verwendet werden. Halt für jeden Buttonzustand einer. Sie sollen also NICHT gleichzeitig aufgerufen werden. Da muss laso irgendne If-Abfrage hin, hab aber ka wie das funktionieren soll (unklare Aufgabenstellungen ohne Hilfe ftw!).
Hier ist mal der Code:
Wäre schön wenn ihr mir helfen könntet.
Marco[/code]
ich hab folgendes Problem:
Ich will mit Java/AWT einen Button programmieren der folgendermaßen reagiert:
1- Der Button hat ursprünglich die Beschriftung "startGespräch"
2- wenn man dann auf den Button drückt soll folgendes passieren:
2.1- Die Buttonbeschriftung soll sich in "EndeGespräch" ändern.
2.2- Ein anderer Button soll deaktiviert werden.
2.3- Eine Methode soll aufgerufen werden (klappt schon)
3- Wenn man nun nochmal auf den Button klickt soll dann folgendes passieren:
3.1- Die Buttonbeschriftung soll sich in "StartGespräch" ändern.
3.2- Ein anderer Button soll aktiviert werden.
3.3- Eine Methode soll aufgerufen werden (klappt schon)
Also im Prinzip will ich das ButtonLayout "on the fly" im ActionListener ändern (was mir NullPointerExceptions wirft).
Ausserdem sollen für einen Button zwei unterschiedliche Listener verwendet werden. Halt für jeden Buttonzustand einer. Sie sollen also NICHT gleichzeitig aufgerufen werden. Da muss laso irgendne If-Abfrage hin, hab aber ka wie das funktionieren soll (unklare Aufgabenstellungen ohne Hilfe ftw!).
Hier ist mal der Code:
Code:
package loesung.view;
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.text.DecimalFormat;
import loesung.model.Zaehler;
public class ZaehlerView {
private Frame frame_;
private Zaehler theZaehler_;
private TextField display_;
private Button zuruecksetzenButton_;
private Button startEndeButton_;
public ZaehlerView(Zaehler theZaehler){
theZaehler_ = theZaehler;
frame_ = new Frame(theZaehler_.getClass().getName());
frame_.setLayout(new GridLayout(3, 1));
display_ = new TextField(40);
display_.setEditable(false);
display_.setText("");
frame_.add(display_);
Button startEndeButton_ = new Button("startGespraech");
startEndeButton_.addActionListener(new startController());
startEndeButton_.addActionListener(new endeController());
System.out.println(startEndeButton_.getLabel());
frame_.add(startEndeButton_);
Button zuruecksetzenButton_ = new Button("zuruecksetzen");
zuruecksetzenButton_.addActionListener(new zuruecksetzenController());
frame_.add(zuruecksetzenButton_);
frame_.addWindowListener(new FrameController());
frame_.pack();
frame_.setVisible(true);
}
private class startController extends WindowAdapter implements ActionListener {
public void actionPerformed (ActionEvent anActionEvent){
try
{
// startEndeButton_.setLabel("endeGespraech");
// zuruecksetzenButton_.setEnabled(false);
// display_.setText("blablabla...");
// theZaehler_.startGespraech();
System.out.println("s");
}
catch (IllegalArgumentException x)
{
new ExceptionView(frame_, x);
}
}
}
private class endeController extends WindowAdapter implements ActionListener {
public void actionPerformed (ActionEvent anActionEvent){
try
{
// startEndeButton_.setLabel("startGespraech");
// zuruecksetzenButton_.setEnabled(true);
// display_.setText("");
// theZaehler_.endeGespraech();
System.out.println("e");
}
catch (IllegalArgumentException x)
{
new ExceptionView(frame_, x);
}
}
}
private class zuruecksetzenController extends WindowAdapter implements ActionListener {
public void actionPerformed (ActionEvent anActionEvent){
try
{
DecimalFormat df = new DecimalFormat( "0.00" );
String output = df.format( theZaehler_.zuruecksetzen() );
display_.setText(output + "€");
}
catch (IllegalArgumentException x)
{
new ExceptionView(frame_, x);
}
}
}
private class FrameController extends WindowAdapter
{
public void windowClosing (WindowEvent aWindowEvent)
{
aWindowEvent.getWindow().dispose();
}
}
}
Wäre schön wenn ihr mir helfen könntet.
Marco[/code]