Swing - SingleFrameApplication - Resources

hesk

Erfahrenes Mitglied
Hallo!

Nur eine kurze Frage. Wenn ich ein SingleFrameApplication habe und die resourceMap verwende, dann gibt es ja ein properties-File wo alles drin steht.

zb open.Action.text = &Open...

Was bedeutet hier das & ?

Danke!
 
Das ist ein sog. Operator als Kennzeichnung das OPEN ein Befehl ist und nicht ein Parameter.
 
Kannst du es vielleicht ein wenig genauer erklären?

Mit open.Action.text = Open... funktioniert es genauso.
 
Ich hätte hierzu noch eine andere Frage.

Ich definiere mit .setAction für einen Button eine Action.

Die Funktion sieht so aus :

Code:
@Action
    public void rollout() throws Exception
    {

Wenn jetzt aber in dieser Funktion eine Exception geworfen wird, dann wird sie nicht weiter geworfen.
Wie kann man das Exception-Handling mit den Actions machen?
 
Nun , wenn da throws Exception steht wird alles was Exception oder Sub-Class ist weitergeworfen. Die Frage ist eher : wo du es versuchst abzufangen ? Wenn , wie du gesagt hast , die Methode durch Klick auf einen Button aufgerufen wird , so bedeutet dass das die Methode vom EDT aufgerufen wird und an diesen natürlich die Exceptions geworfen werden.
Stichwort : java.lang.Thread.UncaughtExceptionHandler
 
Hier wie es implementiert ist:

Code:
try
        {
            JButton rolloutButton = new JButton();
            rolloutButton.setAction( actionMap.get("rollout") );
        }
        catch (Exception e)
        {
            System.out.println("Exception bei Button");
        }

Code:
@Action
    public void rollout() throws Exception
    {
        JFrame mainFrame = Application.getInstance(at.gv.brz.findok_Helper.main.FindokHelperMain.class).getMainFrame();
        
        CopyDialog copyDialog = new CopyDialog( mainFrame );
        copyDialog.pack();
        copyDialog.setLocationRelativeTo( mainFrame );
        ScpTo scpTo = new ScpTo( copyDialog );
        scpTo.addPropertyChangeListener( copyDialog );
        scpTo.execute();
    }

Im Konstruktor von CopyDialog wird eine Exception geworfen.
In der Action kann ich sie mit einem try-cath-Block abfangen. Aber sie wird nicht weiter geworfen dort wo der Button augerufen wurde. Wieso nicht?

Wenn an die EDT die Exception geworfen wird, wo fängt man sie ab?
 
So wie du das gepostet hast wirst du im try-catch in dem du setAction() aufrufst NIE die Exception zugesicht bekommen da wie gesagt die Action selbst erst vom EDT ausgelöst wird. Mit setAction() sagst du Java lediglich was dann beim Klick schlussendlich gemacht werden soll , aber der Methoden-Aufruf selbst wird dadurch nicht gemacht.

Wie man mit Hilfe des Thread.UncoughtExceptionHandler Exceptions aus dem EDT abfängt steht hier im Forum irgendwo ... nutze also bitte die SuFu mit diesem Stichwort.
 
Wie man mit Hilfe des Thread.UncoughtExceptionHandler Exceptions aus dem EDT abfängt steht hier im Forum irgendwo ... nutze also bitte die SuFu mit diesem Stichwort.

Thread.setDefaultUncaughtExceptionHandler()
und
Thread.setUncaughtExceptionHandler()
als Parameter jeweils eine Klasse, die java.lang.Thread.UncaughtExceptionHandler implementiert
 
Also wenn du schon sowas halbfertiges Postest dann kannst du ja auch noch posten wie man an den EDT als Objekt kommt.
Außerdem hättest du dir die letzte Zeile sparen können wenn du es konventionsgemäß so geschrieben hättest :
Thread.setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler);
Thread.setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler);
 
Zurück