tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
2711
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    illaX illaX ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Konstanz
    Beiträge
    268
    Hi,

    ich moechte wenn die Applikation nicht den Fokus hat und ein Event auftritt, dass das Programm in der Taskleiste "blinkt". Ist dies in java moeglich oder kann ich nur das Icon setzen?

    Danke
     
    MfG
    illaX

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Schau mal hier:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    
    /**
     * 
     */
    package de.tutorials;
     
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JFrame;
    import javax.swing.Timer;
     
    /**
     * @author Tom
     * 
     */
    public class TaskBarNotificationExample extends JFrame {
     
        public TaskBarNotificationExample() {
            super("TaskBarNotificationExample");
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            setSize(320, 240);
            setVisible(true);
            Timer timer = new Timer(1000, new ActionListener() {
                public void actionPerformed(ActionEvent e) {
     
                    if (hasFocus()) {
                        System.out.println("has focus");
                    } else {
                        System.out.println("blink");
                        setVisible(true);
                    }
                }
            });
            timer.setRepeats(true);
            timer.start();
        }
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            new TaskBarNotificationExample();
        }
    }

    Gruss Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  3. #3
    illaX illaX ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Konstanz
    Beiträge
    268
    Danke Thomas,

    zur Verstaendniss: Das Fenster blinkt, wegen der Anweisung setVisible(true). Jetzt habe ich (fast) den selben code bei mir eingebaut.
    Nur wenn ich das Fenster wechsel springt er automatisch wieder zu dem das blinkt. Bei dir war dies nicht der Fall, warum?
     
    MfG
    illaX

  4. #4
    illaX illaX ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Konstanz
    Beiträge
    268
    Ok ist klar warum er das macht, gibt es noch eine andere Moeglichkeit als setVisible(true)?
     
    MfG
    illaX

  5. #5
    illaX illaX ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Konstanz
    Beiträge
    268
    Dies hier ist meine Klasse die fuer das "blinken" verantwortlich ist.

    Gestartet wird er in einer anderen Methode wenn das Frame keinen Fokus hat.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    public class Blink extends Thread {
     
        private JFrame frame = null;
        
        public Blink(JFrame frame) {
            super();
            this.frame = frame;
        }
     
        public void run() {
            super.run();
            while(true) {
                try {
                    if(isInterrupted())
                        break;
                    
                    if(!frame.hasFocus()) {
                        frame.setVisible(true);
                        System.out.println("blink");
                    } else
                        break;
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    break;
                }
            }
            System.out.println("Blink beendet");
        }
    }

    Dann fuege ich meinen frame nen WindowListener hinzu, wo bei den aktionen aktivieren und schliessen der Thread interrupted wird. Er wird auch einwandfrei beendet. Wenn ich nun das aktive Fenster verlasse springt er sofort wieder zurueck, das macht er nur beim ersten verlassen, danach funktioniert wieder alles einwandfrei.

    Ich versteh das nicht. Warum tut er das? Er fuehrt keine Anweisungen aus, bei dem WindowListener habe ich die Methoden Deactivated und Inconified leer gelassen.
     
    MfG
    illaX

  6. #6
    illaX illaX ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Konstanz
    Beiträge
    268
    Ok das Problem ist geloest. Habe ueberprueft, ob das Frame den Focus hat, wenn ja dann starte das "blinken". War natuerlich falsch, der Focus war immer aufm Textfeld...
     
    MfG
    illaX

Ähnliche Themen

  1. Von Taskleiste in Symbolleiste
    Von Hallasas im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 22.07.07, 20:57
  2. VB6: Programm in Taskleiste
    Von tlj im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 27.05.07, 18:52
  3. Icon in der Taskleiste
    Von lindin im Forum VisualStudio & MFC
    Antworten: 17
    Letzter Beitrag: 31.08.04, 21:32
  4. Taskleiste HILFE
    Von Shifftysiva im Forum Microsoft Windows
    Antworten: 3
    Letzter Beitrag: 14.06.04, 14:25
  5. Taskleiste
    Von eDreamer im Forum Delphi, Kylix, Pascal
    Antworten: 2
    Letzter Beitrag: 09.07.03, 11:13