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...
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.
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);
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
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
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\");
Synes godt om
Ny brugerNybegynder
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.