Avatar billede gedfrik Nybegynder
20. december 2008 - 01:00 Der er 8 kommentarer

JButton med forskellige valgmuligheder - hvordan?

Hej Eksperten!

Jeg håber i kan hjælpe. Hvordan laves følgende knap i java:

http://i21.photobucket.com/albums/b294/Gedfrik/knap.png

Jeg vil altså gerne lave en knap, der har en pil i højre side. Hvis man trykker på den får man en liste af muligheder, der så bestemmer ændringen.

Ligesom linie-afstands knappen i Word, skift-farve knappen osv...

Mit problem er at jeg ikke kan finde NOGET SOM HELST om dette i javas dokumentation. Det er som om denne komponent ikke findes. (Og det ligner jo ganske givet en standard-komponent).

Kan det virkelig være rigtigt at der ikke findes en klasse der implementerer denne funktionalitet i java!?
Avatar billede arne_v Ekspert
20. december 2008 - 01:05 #1
Det ligner mere en JComboBox end en JButton.
Avatar billede arne_v Ekspert
20. december 2008 - 01:06 #2
Men må jeg komme med et vildt gæt: er det et screenshot af noget fra Eclipse ?

(Eclipse bruger ikke Swing med SWT !)
Avatar billede gedfrik Nybegynder
20. december 2008 - 13:57 #3
Hej Arne,

du har helt ret. Knappen er fra Eclipse. Men det er egentlig ikke så relevant, for jeg er ikke interesseret i at kopiere en implementeret komponent i Eclipse, men at finde ud af hvordan denne slags knap laves i java. (Samme slags knap findes, som sagt også i word og en million andre steder).

Du har også ret i at princippet er det samme som en JComboBox. Men det er ikke helt samme funktionalitet, da en JComboBox unægteligt ville være underlig at bruge som en knap. Det som jeg leder efter er en knap, der har to funktionaliteter - en venstre side der fungerer som en normal knap og og højre side hvor der kommer en menu frem med muligheder, der er beslægtede med knappen funktionalitet. Men har du da noget i tankerne?

Jeg har senere fundet ud af at Java ikke har en standard-komponent til dette.
Sun skriver i deres Design-Guidelines at en sådan knap laves vha. en JToggleButton (der skifter stadier). Hvordan de helt præcis får menuen under knappen frem skriver de faktisk ikke noget om, men jeg har selv lavet det vha. en JPopupMenu.

Jeg endte med dette:

http://i21.photobucket.com/albums/b294/Gedfrik/knap-1.png

Som du/i kan se er det ikke helt samme funktionalitet som beskrevet, da denne knap kun har en funktion, at skjule og vise menuen. Men det er sådan Sun officielt antyder at det skal gøres!

Efter yderligere research, fandt jeg ud af at der rundt omkring er opfundet nogle komponenter der har den ønskede funktionalitet, men de virker alle sammen lidt uofficielle til min smag :)
Avatar billede arne_v Ekspert
20. december 2008 - 18:57 #4
Eclipse bruger som sagt SWT. Hvis du bedre kan lide SWT end Swing, så kunne du jo
skifte til SWT.
Avatar billede gedfrik Nybegynder
21. december 2008 - 03:00 #5
Det har du helt ret i. Men jeg ved ikke om jeg bedre kan lide SWT, når det ikke er noget jeg kender til. Så du kunne måske være lidt mere informativ?

Alternativer er der mange af!
Avatar billede arne_v Ekspert
21. december 2008 - 04:08 #6
Det er svært. Jeg har aldrig selv brugt SWT.
Avatar billede gedfrik Nybegynder
21. december 2008 - 18:55 #7
Nu har jeg downloaded SWT til Eclipse, så må vi se hvad det bringer.
Avatar billede snoop_one Nybegynder
22. december 2008 - 10:50 #8
Den komponent du søger er en "split button". Du kan evt. google det eller se på følgende sider:

Flamingo projektet:
http://www.pushing-pixels.org/?p=570

Lave det selv fra bunden:
http://www.atwistedweb.com/java/SplitButton.html
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester