04. november 2004 - 16:21Der er
1 kommentar og 1 løsning
Størrelser i Swing
Hej I kloge hoveder!
Jeg ka' ikke finde ud af det der med størrelser i Swing (minimumSize, maximumSize, preferredSize).
Jeg kan få hovedvinduet (framen) til at åbne op med den størrelse som alle dens komponenters preferredSizes giver tilsammen. Det som jeg gerne vil ha' er, at vinduet ikke må kunne gøres mindre end denne størrelse, men det må gerne gøres større.
Den nemmeste måde du kan gøre det på er at adde en ComponentListener til din frame, (minimumSize, maximumSize, preferredSize) har ikke nogen effekt på en frame, her skal du bruge setSize().
label1 = new javax.swing.JLabel(); frameWidth = new javax.swing.JTextField("400"); label2 = new javax.swing.JLabel(); frameHeight = new javax.swing.JTextField("400");
/* Tilføj følgende metode til din JFrame og ret metoden til så passer dig * Du kan jo eventuelt minimere den til kun at indeholde setSize() * * Altså: * public void componentResized(java.awt.event.ComponentEvent evt) { * setSize(new java.awt.Dimension( 400 , 400)); * } * * men af test hensyn ser den sådan ud. */ addComponentListener(new java.awt.event.ComponentAdapter() { public void componentResized(java.awt.event.ComponentEvent evt) { try{ int w = Integer.parseInt(frameWidth.getText()); int h = Integer.parseInt(frameHeight.getText());
int newW = getWidth() > w ? getWidth() : w; int newH = getHeight() > h ? getHeight() : h; setSize(new java.awt.Dimension( newW , newH)); } catch (NumberFormatException n ){
} } });
label1.setText("Set min. width"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; getContentPane().add(label1, gridBagConstraints);
Det virker ikke som om, at det at lukke for at et vindue kan gøres mindre end en bestemt størrelse, er en standard inden for GUI-verdenen, når det skal gøres via en ComponentListener.
Da min applikation helst skal følge skik og brug, må jeg hellere lade brugeren minimere vinduet så tosset han vil.
Men nu ved jeg hvordan det kan gøres, så jeg kan bruge det en anden god gang.
Mvh. hangaard
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.