Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich arbeite gerade mit AWT und Java.
Ich möchte, dass wenn der Benutzer das X drückt um das AWT-Fenster zu schließen, java so tut, als wenn ich einen Button gedrückt habe. Ist das möglich ein Buttonevent auszulösen, ohne den Button zu betätigen?
Wenn du ein Buttonevent auslösen möchtest ohne ihn zu betätigen, reicht eine einfache doclick anweisung.
Das ganze an einem Beispiel:
Code:
JButton close = new JButton("close");
close.addActionListener(this);
//...
//close ist in dem Fall der Button der gedrückt werden soll, wenn du dein JFrame schließt
// Als nächstest übergibst du der Methode die dein JFrame schließt noch folgende Anweisung:
close.doClick();
Wenn du ein Buttonevent auslösen möchtest ohne ihn zu betätigen, reicht eine einfache doclick anweisung.
Das ganze an einem Beispiel:
Code:
JButton close = new JButton("close");
close.addActionListener(this);
//...
//close ist in dem Fall der Button der gedrückt werden soll, wenn du dein JFrame schließt
// Als nächstest übergibst du der Methode die dein JFrame schließt noch folgende Anweisung:
close.doClick();
das Problem ist ich habe keinen JButton. Ich darf nur AWT benutzen, und daher habe ich die Methode doClick() nicht.
Gibt es in AWT auch eine Möglichkeit?
also wie schon weiter oben erwähnt musst du die methode die hinter dem button steckt aufrufen:
aber weil du die funktionalität des buttons wahrscheinlich direkt in die actionPerformed-Methode gepackt hast, wirst du um eitwas umstrukturierung nicht herumkommen:
Code:
Button button=new Button();
button.addActionListener(new ActionListener(){
//diese methode wird automatisch beim klicken ausgeführt
public void actionPerformed(ActionEvent e){
//darin wird jetzt die methode mit der geschäftslogik //aufgerufen:
doSomething();
}
});
sorry dass ich mich erst jetzt wieder melde, war beruflich unterwegs.
Also Du hast eine Klasse nenn sie wie Du magst, bei mir heisst sie windowClosingAdapter.
Diese Klasse implementiert den WindowAdapter, der zwingend die Methode "public void windowClosing" mit dem
Parameter(WindowEvent event) erwartet.
In Code meine ich das so:
Code:
public class WindowClosingAdapter extends WindowAdapter
{
public WindowClosingAdapter()
{
// Konstrukor. Wenn Du keinen brauchst, lass ihn weg.
}
// Die Methode ist ein Muss!
public void windowClosing(WindowEvent event)
{
event.getWindow().setVisible(false);
event.getWindow().dispose();
System.out.println("Ende gut, alles gut");
System.exit(0);
}
}
Nun hast Du Deine Klasse, von der aus Du Deine windowClosingAdapater Klasse aufrufen moechtest.
Du benoetigst dazu die folgende Klassenvariable:
private WindowClosingAdapter wca;
Um auf das windowClosing zu reagieren (also wenn Du das X oben rechts klickst) meldest Du folgenden Listener im Konstruktor an:
wca = new WindowClosingAdapter();
addWindowListener(wca);
Nun moechtest Du, dass bei Button-Klick die gleiche Methode aufgerufen wird, die auch bei WindowClosing aufgerufen wird. Dazu musst Du einen ActionListener anmelden der im Stande ist, der windowClosing Methode ebenfalls ein WindowEvent zu uebergeben.