Aktualisierung in regelmäßigen Abständen

Status
Nicht offen für weitere Antworten.

schuetzejanett

Bekanntes Mitglied
Hallo,

ich habe eine RCP in der mehrere Views ähnlich wie karteikarten angeordnet sind. Die eine View simuliert di ewarteschlage des druckers.
Nun möchte ich das solange die View den Focus hat sie sich ständig aktualisiert, und auch dann wenn sie den focus erhält hat eine andere view den focus soll sie sich nicht aktualisieren (oder sie muss es nicht). Die Methode fürs aktuaisieren habe ich schon, nur weiß ich nicht so recht wie ich den rest machealso das sie sich nur aktualisiert, wenn sie den focus hat oder bekommt und das dann in regelmäßigen abständen jede halbe minute oder so.

Kann mir jemand sagen, wie ich dies realisieren kann?

Ich weiß das es was mit Threds und timern zu tun hat, aber eben nicht, wie ich das mache vorallem weil es sich ja nur aktualisieren soll, wenn die view den focus hat?
 
W

wayne0101

Gast
um erlich zu sein, weiß ich nicht, was die antwort von Wildcard dir sagen soll. für mich hat das noch nicht mal was mit deiner frage zu tun, vor allem weil wir hier nicht von focus setzen sondern von focus abfragen sprechen. deshalb hier mal mein ansatz:

zunächst mal zerlege ich dein problem in zwei teilprobleme. du willst zum einen wissen, ob eine deiner views den focus hat und zum zweiten wie du die aktualisierung dann in regelmässigen abständen anstößt.

zum thema focus ist zu sagen, daß du diese info ja (vermutlich) von einem JTabbedPane haben willst, also einer Component, die andere Components beinhaltet, die ggf. selbst den focus halten könnten. wenn letzteres der fall ist und du hasFocus() von deinen JTabbedPane aufrufst, wird dir keines true zurück geben. deshalb wäre mein lösungsvorschlag hier eine rekursive methode zu schreiben, die dir für ein JTabbedPane zurück gibt, ob dieses oder eine beinhaltende Component den focus hat. irgendwas in der art:

Code:
// vorsicht: habe methode nicht auf funktionstüchtigkeit geprüft sondern mal eben schnell hier hereingecoded
private boolean hasFocus(Component comp){
    if( comp.hasFocus() ) return true;
    for( int i = 0; i < comp.getComponentCount(); i++ )
        if( hasFocus(comp.getComponent(i)) return true;
    return false;
}

zum thema aktualisierung. hier nehme ich einfach mal an, daß du deine verschiedenen JTabbedPanes von JTabbedPane erben lässt, wie auch von einem interface. letzteres legt eine methode refresh() an, die die aktualisierung des jeweiligen JTabbedPane durchführt. du schriebst ja, daß du das aktualisieren bereits gelöst hast. ausserdem erklärt dein interface das vorhandensein einer methode containsFocus(), also die methode hasFocus(...) von gerade eben, der als erstes this übergeben wird. es ist ganz egal ob du das so gelöst hast oder anders, das wesentliche wirst du, denke ich, begreifen. du kannst jetzt inline (um an die ganzen methoden leicht ranzukommen) einen neuen thread erzeugen oder aber dir davon ne extra klasse machen. ich schreib dir mal den letzteren lösungsweg, da der sauberer ist:

Code:
class PaneRefreshThread extends Thread {

    private MyTabbedPane[] panes;

    public PaneRefreshThread(MyTabbedPane[] somePanes){
        panes = somePanes;
    }

    public void run(){
        while( !isInterrupted() ){
            for( int i = 0; i < panes.length; i++ )
                if( panes[i].containsFocus() )
                    panes[i].refresh();
            waitFor(1000);
        }
    }

    private synchronized waitFor(long ms){
        try {
            wait(ms);
        }
        catch( Exception e){
            e.printStackTrace();
        }
    }

}

letztlich solltest du nicht vergessen diese klasse irgenwo zu instanziieren und selbstverständlich den somit erzeugten thread anschließend zu starten (aPaneRefreshThread.start()).

du kannst selbstverständlich mit FocusListenern arbeiten und dann, wenn bestimmte Components den focus erhalten den thread erst instanziieren und starten. wenn dann keines der relevanten Components mehr über den focus verfügt, würde ich ihn wieder beenden (aPaneRefreshThread.interrupt()). so läuft der thread dann nur, wenn er benötigt wird und verbraucht keine unnötige rechenzeit und speicher.

viel glück

wayne
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M TableView + Datenbank Aktualisierung AWT, Swing, JavaFX & SWT 4
N Aktualisierung des Fensters AWT Java ohne Ruckeln AWT, Swing, JavaFX & SWT 3
P Aktualisierung von jLabel in jFrames AWT, Swing, JavaFX & SWT 8
O JavaFX Aktualisierung der Scene AWT, Swing, JavaFX & SWT 1
D Swing keine JLabel-Aktualisierung bei "externem" Aufruf durch Helferklasse AWT, Swing, JavaFX & SWT 10
F Textfeld Währungszahlen und automatische Aktualisierung AWT, Swing, JavaFX & SWT 14
J Denkfehler bei Aktualisierung eines GUI AWT, Swing, JavaFX & SWT 4
S JTable nach aktualisierung - neue Zeile nicht "klickbar" AWT, Swing, JavaFX & SWT 0
T Tetris - Gui Aktualisierung AWT, Swing, JavaFX & SWT 2
Y JFormattedTextfield - Aktualisierung und Beschränkung AWT, Swing, JavaFX & SWT 4
dzim TableView - keine Aktualisierung geänderter Items AWT, Swing, JavaFX & SWT 5
B Aktualisierung einer JList AWT, Swing, JavaFX & SWT 5
D JTable Aktualisierung nach hinzufügen eines Datensatzes AWT, Swing, JavaFX & SWT 7
B Problem bei der Aktualisierung des Frames AWT, Swing, JavaFX & SWT 6
lumo SWT Resize und aktualisierung der gui AWT, Swing, JavaFX & SWT 6
B GUI Aktualisierung aus/und eventListener AWT, Swing, JavaFX & SWT 3
S Swing Aktualisierung Fensters AWT, Swing, JavaFX & SWT 7
K Modaler Dialog aber trotzdem Aktualisierung des MainFrames AWT, Swing, JavaFX & SWT 6
W Swing Aktualisierung des Bildes AWT, Swing, JavaFX & SWT 4
C JTable-Aktualisierung leidiges Thema AWT, Swing, JavaFX & SWT 18
Plastagen JTextArea CaretPosition Aktualisierung AWT, Swing, JavaFX & SWT 10
C permanente aktualisierung der Koordinaten der Maus auf einem Panel AWT, Swing, JavaFX & SWT 8
U JComboBox: (Vor)auswahl nach Aktualisierung AWT, Swing, JavaFX & SWT 2
kodela Swing Problem mit sofortiger Aktualisierung eine Textfeldes AWT, Swing, JavaFX & SWT 8
J Progressbar aktualisierung nach file übergabe AWT, Swing, JavaFX & SWT 7
T Aktualisierung einer JComboBox -> RepaintProblem! AWT, Swing, JavaFX & SWT 3
H Aktualisierung Gui AWT, Swing, JavaFX & SWT 5
G Bessere Aktualisierung eines Frames AWT, Swing, JavaFX & SWT 5
P Problem bei Aktualisierung eines JPanels AWT, Swing, JavaFX & SWT 2
S Aktualisierung der GUI AWT, Swing, JavaFX & SWT 6
L Problem mit der aktualisierung von JTree und Text Area AWT, Swing, JavaFX & SWT 22
F Aktualisierung während MOUSE_PRESSED AWT, Swing, JavaFX & SWT 4
M swt - problem mit aktualisierung des tableeditors AWT, Swing, JavaFX & SWT 3
G Aktualisierung der Ausgabe in SWT AWT, Swing, JavaFX & SWT 2
A Aktualisierung eines Bildes innerhalb einer Komponente AWT, Swing, JavaFX & SWT 7
A JTable - Aktualisierung und Spaltenbreite AWT, Swing, JavaFX & SWT 5
D Aktualisierung von GUI AWT, Swing, JavaFX & SWT 11
W JTextArea als Logausgabe und Aktualisierung AWT, Swing, JavaFX & SWT 3
C zu späte aktualisierung/repaint AWT, Swing, JavaFX & SWT 3
X Probleme mit aktualisierung durch Repaint() Methode AWT, Swing, JavaFX & SWT 3
R Thread-Problem (Aktualisierung von JLabel-Komponente) AWT, Swing, JavaFX & SWT 9
M problem mit textfield-aktualisierung AWT, Swing, JavaFX & SWT 4
G JScrollPane problem mit aktualisierung der daten AWT, Swing, JavaFX & SWT 3
L Aktualisierung bei JTabbedPane AWT, Swing, JavaFX & SWT 3
T Swing bei Realtime-Aktualisierung zu langsam? AWT, Swing, JavaFX & SWT 10
M JCombobox aktualisierung, beim wecheseln des Tab JTabbedPane AWT, Swing, JavaFX & SWT 3
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
H MouseMotionListener#mouseDragged() in großen Abständen AWT, Swing, JavaFX & SWT 7
S GridLayout mit sehr großen Abständen AWT, Swing, JavaFX & SWT 3
N Autos (Rechtecke) in zufälligen Abständen von fahren lassen AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben