Ich möchte ein %code% , das wie folgt drei Zustände hat:
Q1. Kann ich den %code% für den obigen Zweck verwenden oder muss ich eine benutzerdefinierte Swing-Komponente verwenden?
Ich weiß nicht, warum jemand die Lösungen mit zusätzlichen Icon-Png-Dateien anbietet, während java api eine große Funktionalität für die überschreibende painIcon (..) -Methode bietet.
Die beste leichtgewichtige Lösung zur Bestimmung der CheckState-Checkbox-Haltung mit drei Zuständen ist das IMO ClientProperty -Attribut.
%Vor%
Verwendung: %code%
Oh ja, aber Sie müssen eine benutzerdefinierte Komponente erstellen.
Sehen Sie sich diesen Artikel im Java-Spezialisten an und prüfen Sie, ob er für Sie funktioniert.
Es braucht jedoch etwas Arbeit in OSX.
http://img717.imageshack.us/img717/7454/capturadepantalla201004np.pngWinXP:
alt text http://img691.imageshack.us/img691/8682/capturadepantalla201004n.png
Hier ist ein Beispiel für eine TristateCheckBox:
Beispiel mit TristateCheckBox http://img710.imageshack.us/img710/5609/so2701817.png
Wenn Sie versuchen, eine Reihe von Kontrollkästchen zu erstellen (was ein häufiger Grund ist, ein Kontrollkästchen mit drei Zuständen zu verwenden), lesen Sie Jide Commons .
Das UI-Element JCheckBox unterstützt es nicht direkt, aber Sie können es austricksen:
%Vor%Natürlich ist dies nur der UI-Teil, Sie müssen Ihren Zustandsautomaten mit einem benutzerdefinierten Modell implementieren.
Sie benötigen etwas, das die Status des Kontrollkästchens enthält. Ich benutze ein benutzerdefiniertes Modell.
%Vor%In Ihrem benutzerdefinierten ToggleButtonModel
%Vor%Ich habe gerade eine ThreeStateCheckBox-Klasse in Java 8 erstellt, die JCheckBox verwendet / imitiert, einstellbares Verhalten hat (zB sollte sie auf die volle Breite, auf die volle Höhe reagieren und wo sollte sie platziert werden, wenn die Komponente vom Layout gestreckt wird "Kann der Benutzer den unbestimmten Zustand bewirken? Kann der Benutzer dies beeinflussen?" Und sieht in allen Standard-LookAndFeels korrekt aus (Sie müssen jedoch ein zusätzliches Argument angeben, wenn Sie Nimbus verwenden). Nahm mich die letzten 5 Stunden.
Demo-Code ist am Anfang der Klasse enthalten. BEARBEITEN: Screenshot
Konzept:
Es wird eine normale JCheckBox ohne Text verwendet, so dass Aussehen und Verhalten klassisch sind und die Größe der Box mit dem paintComponent-Code gemessen werden kann. Ein gefülltes Rechteck wird für den unbestimmten Zustand gemalt. Die JCheckBox wird programmgesteuert festgelegt, wodurch das Ereignis nicht ausgelöst wird, seit ein ActionListener verwendet wurde.
Ein Boolescher Wert wird verwendet, um den Zustand auszudrücken. Die Klasse selbst erweitert KEINE Komponente, also hat sie nur die wesentlichen Methoden. Alle verwendeten Komponenten sind exponiert.
%Vor%