Anfänger zum Schwingen

8

Ich möchte eine einfache Swing-App erstellen. Ich habe jedoch sehr, sehr, sehr wenig Erfahrung mit Swing. Ich möchte eine Ein-Fenster-App erstellen, die alle 5 Minuten mit dem Inhalt eines Screen-Scrapings aktualisiert wird, den ich mache. Ich benutze Clojure, um den Code zu schreiben. Ich nehme an, Swing ist der Weg dahin, aber wenn es andere, bessere Optionen gibt, würde ich gerne mehr darüber hören.

Welchen Code müsste ich mit Swing machen? (Welche Klassen sollte ich verwenden, etc.)

Danke, Alex

    
Alex Baranosky 21.01.2011, 04:56
quelle

6 Antworten

8

Nun, für alle fünf Minuten, java.util.TimerTask sollte hilfreich sein. Für allgemeine Swing-Informationen sollte dieser Link zu den Java-Tutorials hilfreich sein.

>

Um ein Fenster zu haben, JFrame wahrscheinlich deine beste Wette.

Um ein- oder mehrzeiligen Text anzuzeigen, sollten Sie sich JLabel ansehen oder JTextArea .

>

Um Bilder anzuzeigen, sollte ImageIcon das tun Trick.

Für andere Bedürfnisse sollte das Java-Tutorial eine große Hilfe sein.

Als trashgod vorgeschlagen, hat javax.swing.Timer einige Vorteile, wenn es um GUIs über java.util.TimerTask geht . Dieser Artikel zu mit Timern in Swing-Anwendungen sollte Ihnen bei der Entscheidung helfen, welche Version Sie verwenden sollen.

>     
Zach L 21.01.2011, 05:02
quelle
4

Sie haben Recht. Swing ist der Weg zu gehen, aber die Verbindung aller Teile kann ein bisschen schwierig sein, wenn Sie Clojure und Swing lernen. Es gibt einige kurze Beispiele, die zeigen, wie einfache Swing-GUIs in Clojure erstellt werden. Hier ist ein weiteres kurzes Beispiel, das eine einfache GUI mit einem Timer -Objekt kombiniert.

%Vor%

Wenn dies ausgeführt wird, wird ein kleines Fenster mit einem Label erstellt, das jede Sekunde aktualisiert wird. Aus Ihrer Beschreibung würden Sie die Frequenz des Timers von 1.000 ms auf 300.000 ms ändern, um alle 5 Minuten eine Aktion auszulösen. Um etwas anderes als das Aktualisieren einer Beschriftung zu tun, würden Sie den Inhalt der Funktion timer-action ändern.

Ich denke das ist Thread-sicher, aber habe nicht sicher überprüft. Bei der Aktualisierung von Swing-Komponenten gibt es auch Vorsichtsmaßnahmen und Anleitungen zur Thread-Sicherheit. Sie werden wahrscheinlich auch diese überprüfen wollen.

Ich hoffe, das ist informativ genug, um Ihnen ein paar Anhaltspunkte zu geben, wo Sie nach weiteren Informationen suchen können.

BEARBEITEN : Ich wollte hier auf eine interessante Sache hinweisen. Beachten Sie, dass die Funktion 'timer-action' den Wert eines ihrer Argumente ändert. Das Argument 'counter' ist ein Atom, das in 'timer-fn' definiert ist, aber der Action-Listener kann es ändern. Dies ist etwas, was Sie in Java normalerweise nicht tun können. Vielleicht kann jemand, der schlauer ist als ich, dazu Stellung nehmen, ob dies eine "Schließung" darstellt. In meinen früheren Erfahrungen mit Sprachen wie Pascal würde ich sagen, dass das übergebene Argument "Call-by-Reference" ist, im Gegensatz zu Javas strengem "call-by-value" Argument, das übergeben wird. Ist das etwas anderes?

EDIT 2 : Nachdem ich meine Fakten mit einer anderen Frage überprüft habe, ist dies in der Tat ein Beispiel für eine Schließung in Clojure.

    
clartaq 26.01.2011 01:17
quelle
2

In einem Swing-Kontext hat javax.swing.Timer einige Vorteile ; Es gibt ein Beispiel hier . Je nachdem, was Sie anzeigen möchten, kann JEditorPane angemessen sein.

>     
trashgod 21.01.2011 05:19
quelle
1

Zusätzlich zu den von @Zach L erwähnten Ressourcen (insbesondere in Bezug auf die Timer) würde ich mir Seesaw genauer ansehen , vor allem, weil Sie dies in Clojure schreiben.

Insbesondere stelle ich fest, dass seesaw.timer zum Abfeuern der Aktualisierung verwendet wird Veranstaltungen. Die Verwendung eines JTextPane (schreibgeschützt) oder eines JEditorPane (bearbeitbar) würde gut funktionieren, um reich formatierte Ergebnisse (wie HTML) anzuzeigen.

    
deterb 09.07.2012 02:03
quelle
0

Probieren Sie diesen Link für Swing aus. Wie Zach sagte, müssen Sie JFrame verwenden und TimerTask sollte für Ihre Anforderungen verwendet werden.

Sie können auch andere alternative Frameworks für Swing ausprobieren.

    
rgksugan 21.01.2011 05:23
quelle
0

Clojures Software-Transaktionsspeicher ermöglicht das Einstellen von Uhren auf Variablen; Ihr Callback wird ausgeführt, wenn die Variable geändert wird (durch irgendwas). Dies eignet sich sehr gut für GUI-Programmierung. Ihre GUI kann automatisch aktualisiert werden, wenn irgendetwas die Variable berührt.

Hier ist ein kurzes, aber nicht-triviales Beispiel, wie man das macht, mit einer Erklärung dessen, was vor sich geht: Ссылка

    
Paul Legato 07.02.2011 04:04
quelle

Tags und Links