Avatar billede kristianp Nybegynder
28. juni 2001 - 11:25 Der er 7 kommentarer og
1 løsning

getWidth() på en komponent i en GUI

hvis jeg skriver

System.out.println(\"size = \" + bShowAll.getWidth() + \", \"  + bShowAll.getHeight());

er outputtet \"size = 0,0\"
bShowAll er en JButton, hvorfor får jeg ikke npgle værdier ud, knappen kan ses på GUI\'en når jeg kører programmet ????
Avatar billede ladyhawke Novice
28. juni 2001 - 11:39 #1
Jeg er ikke sikker på det men jeg har selv haft problemer med disse funktioner. Har du du sat størrelsen i forvejen, eller blot lavet en ny knap? hvis du f.eks. bruger:

\"Dimension d = bShowAll.getMaximumSize();\"
vil
\"d.getWidth()\"
give den maksimale bredde for knappen. Jeg er ikke sikker på at du kan få noget brugbart resultat før størrelsen er sat på knappen. Du kan jo også sætte den til noget andet end Preferred og Maximum... Hvis du vil styre størrelsen af en knap fordi den skal justeres efter andre komponenter, så er det muligt uden at kende den præcise størrelse...
Avatar billede logical Nybegynder
28. juni 2001 - 11:42 #2
Hvis du ikke selv sætter en bredde og højde, og evt. lokation af knappen bliver den initialiseret til 0,0 på position 0,0. Hvis du efterfølgende spørger getPreferredSize, vil den beregne hvor meget plads, den ville kunne lide at fylde hvis den fik lov. Den endelige størrelse bliver sat af layoutmanager, når din container skal gentegnes.

Brug getSize() til at aflæse dens størrelse.
Avatar billede kristianp Nybegynder
28. juni 2001 - 11:49 #3
Det jeg vil have er at jeg sætter Insets på den største knap der er, jeg vil ikke have så meget luft til højre og venstre fra knapteksten. Så vil jeg gerne have størrelsen på knappen og sætte de andre kanpper til samme størrelse.

JPanel upperButtonPanel = new JPanel();
JButton bShowAll = new JButton(\"Show All\");       
bShowAll.setMargin(new Insets(0,2,0,2);
Dimension bDimension = bShowAll.getSize();
JButton bSearch = new JButton(\"Search\");        bSearch.setPreferredSize(bDimension);   
JButton bUpperClear = new JButton(\"Clear\")        bUpperClear.setPreferredSize(bDimension);
       
Avatar billede ladyhawke Novice
28. juni 2001 - 11:59 #4
Hvis knapperne skal anbringes over hinanden kan du bruge Box...

Box box = Box.createVerticalBox();

...

box.add(optionsBox.createVerticalGlue());
box.add(knap1);
box.add(knap2);       
box.add(knap3);
box.add(optionsBox.createVerticalStrut(7)); //sætter et mellemrum på 7
box.add(knap4);

etc.
Box kan også være vandret...
Avatar billede kristianp Nybegynder
28. juni 2001 - 12:37 #5
Det hjælper da ikke på knappernes størrelse, jeg vil jo have at alle knapper har samme størrelse som den største, efter jeg har lavet en ny Insets på den
Avatar billede ladyhawke Novice
28. juni 2001 - 12:45 #6
Jo, du skal bare sætte knappernes størrelse til noget meget stort (så du er sikker på at de fylder mere end boksen, så vil de få samme bredde!) Det virker fint til at justere knapper med, jeg bruger det i min specialeafhandling på universitetet
Avatar billede ladyhawke Novice
28. juni 2001 - 13:38 #7
Knappernes størrelse kan sættes med:

knap1.setMaximumSize(new Dimension(200,1000));
knap2.setMaximumSize(new Dimension(200,1000));

...
Avatar billede logical Nybegynder
28. juni 2001 - 14:58 #8
Det der med selv at tilpasse knapper er lidt uinteressant nu om dage, efter som der findes udemærket kombinationer af layoutmanagere til den slags.

Prøv evt. et GridLayout, hvor der er 1 kolonne og x rækker.
Du kan evt. sætte en EmptyBorder rundt om hver knap, for at sprede dem pænere.

GridLayout vil netop tilpasse til preferredsize på den bredeste og højeste, og sætte det for de andre.

JPanel p = new JPanel();
p.setLayout(new GridLayout(0, 1)); // x (=0) rækker og 1 kolonne
p.add(new JButton(\"smalltext\"));
p.add(new JButton(\"verylongtextwhichsetsthewidth\"));
p.add(new JButton(\"Ok\");

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