Frage

Ich habe immer benutzerdefinierte Komponenten in Java erstellen oder bestehende anpassen, aber meine Suche führte nie in irgendetwas nützlich. Also beschloss ich, die Stackoverflow-Community zu fragen:

Wo finde ich Informationen über das Anpassen Java GUI-Komponenten im Allgemeinen finden?

Und wenn ich Customizing meine, ich spreche nicht über das Ändern von Farben, Schriften usw. Ich meine wirklich , um sich anzupassen. Hier sind zwei Mockup Beispiel Komponenten:

Benutzerdefinierte Komponenten Mockup

Notizen
Ich begann in erster Linie auf diese Frage zu finden, wie die beiden oben genannten benutzerdefinierten Komponenten zu erstellen. Aber dann wurde mir klar, dass es über Hacking Swing-Komponenten nicht um eine allgemeine Frage. Also dachte ich, es wäre besser, eine Liste von Ressourcen zu haben.

Falls Sie sich fragen, wie Sie die beiden Komponenten in der Mock-up der Arbeit, hier ist es:

Eine angepasste JScrollPane, die zwei Bildlaufleisten für jede Ausrichtung hat. Jeder Regler kann anders handeln. Zum Beispiel bewegt die äußeren und normalerweise die inneren bewegen, um den Blick in einem mehr Picasa -ähnlichen Art und Weise. Ich habe tatsächlich eine funktionierende (!) Antwort von Google Groups hier , aber das war nur Code.

Das zweite ist ein Brauch JComboBox die, wenn die Popup-Liste erweitert wird, eine JComponent am Ende hat. Das kann alles sein, von einem einfachen JLabel mit einem Symbol zu einem JButton, die die Liste in einer Art und Weise manipulieren.

Aber diese Frage ist nicht über diese speziellen Komponenten. Es geht um Suche nach Ressourcen (Webseiten, Bücher, etc.) zu lernen, wie sie erstellen.

War es hilfreich?

Lösung

In diesem Artikel, eine benutzerdefinierten Swing-Komponente schreiben wirklich hilfreich sein sollte. Es umfasst ein Windows-Schieberegler repliziert wird, die sowohl diskrete Schritte und einen kontinuierlichen Bereich hat.

Andere Tipps

Das JDK ist Open Source. Um zu verstehen, wie Sie eine Swing-Komponente schreiben, gibt es keinen besseren Ort, um als Quelle für die Swing-Komponenten. In der Regel, wenn Sie benutzerdefinierte Komponenten erstellen, sind Sie Interesse an einem oder mehreren der folgenden: {Interaktion Semantik, visuelle Darstellung, kompositorische Struktur}

Beginnen Sie mit den einfachsten Fällen:

Passive Komponenten: JLabel
Interaktive Komponenten: JButton

JLabel die Barebone-Erweiterung von JComponent für benutzerdefinierte Zeichnen eines Bauteils zeigen; in diesem Fall zieht es den ‚Text‘ String-Wert als seine Darstellung.

JButton die Barebone-Erweiterung für Interaktion mit dem Benutzer zusätzlich zur Erstellung der Komponente zeigen.

Filthy Rich Clients ein ausgezeichnetes, sehr lesbares Buch zu diesem Thema. Es geht mehr um das Look and Feel von Swing-Komponenten zu verbessern, als völlig neue zu schaffen, aber es in den Eingeweiden of Swing bekommt und bietet viele praktische Beispiele.

Dies ist eine ziemlich offene Frage, die kurze, einfache Antwort ist, dass Sie JComponent oder einer seiner Nachkommen und fügen Sie die Funktionen, die Sie benötigen. Offensichtlich, je nachdem, was Sie wollen, dies zu tun, kann in Schwierigkeiten variieren. Für den Anfang empfehle ich Ihnen Sun Tutorial rel="nofollow , wo es Beispiele dafür, wie die Verwendung Scroll-Scheiben und Popup-Menüs . Sobald Sie durch denjenigen gelesen haben und experimentierten könnten Sie spezifischere Fragen haben, die einfacher für Menschen zu berücksichtigen, Antworten zu geben.

Wenn die beiden Komponenten in Ihrem Mock-up sind alles, was Sie wollen, sind dann implementieren geben uns etwas bessere Vorstellung davon, wie Sie sie Funktion wollen bessere Antworten liefern.

Lesen Sie Hacks Swing: Tipps & Tools zum Erstellen von Killer-GUIs (Marinacci, Adamson) . IMHO ein wichtiges Buch für die effektive Arbeit mit Swing im Allgemeinen.

Persönlich finde ich die oben genannten Antworten zu allgemein oder vage. Auch als jemand unweigerlich in diesen Thread zu stoßen gehen genauso wie ich es tat, ich könnte genauso gut das, was ich gefunden:

Hope, das hilft ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top