Infatti non devi usare WindowListener ma ComponentListener (JFrame è un Component) che ha il metodo componentResized().Originariamente inviato da JunkyFunki
su windowlistener non mi sembra ci sia il metodo opportuno
Ecco un esempio abbastanza banale (e forse stupido). Ho stabilito che la dimensione del font è il 5% dell'altezza della finestra.
codice:import java.awt.*; import java.awt.event.*; import javax.swing.*; public class TestFrame extends JFrame { private JButton b1, b2, b3, b4, b5; public TestFrame () { super ("Test Frame"); setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); setSize (300, 300); b1 = new JButton ("Uno"); b2 = new JButton ("Due"); b3 = new JButton ("Tre"); b4 = new JButton ("Quattro"); b5 = new JButton ("Cinque"); add (b1, BorderLayout.NORTH); add (b2, BorderLayout.EAST); add (b3, BorderLayout.SOUTH); add (b4, BorderLayout.WEST); add (b5, BorderLayout.CENTER); addComponentListener (new ComponentAdapter () { public void componentResized (ComponentEvent e) { adjustFont (b1, 5.0f); adjustFont (b2, 5.0f); adjustFont (b3, 5.0f); adjustFont (b4, 5.0f); adjustFont (b5, 5.0f); } }); } private void adjustFont (Component c, float percentual) { float fontSize = getHeight () * percentual / 100.0f; Font f = c.getFont (); f = f.deriveFont (fontSize); c.setFont (f); } public static void main (String[] args) { SwingUtilities.invokeLater (new Runnable () { public void run () { TestFrame f = new TestFrame (); f.setVisible (true); } }); } }

Rispondi quotando