Domanda

Ciao a tutti. Sto cercando di creare una GUI swing con un pulsante e un'etichetta su di essa. sto usando un layout di bordo e l'etichetta (nel campo nord) si presenta bene, ma il pulsante occupa il resto del riquadro (si trova nel campo centrale). qualche idea su come risolvere questo problema?

È stato utile?

Soluzione

Devi aggiungere il pulsante a un altro pannello, quindi aggiungere quel pannello al frame.

Si scopre che BorderLayout espande qualsiasi componente sia nel mezzo

Ora il tuo codice dovrebbe apparire così:

Prima

public static void main( String [] args ) {
    JLabel label = new JLabel("Some info");
    JButton button = new JButton("Ok");

    JFrame frame = ... 

    frame.add( label, BorderLayout.NORTH );
    frame.add( button , BorderLayout.CENTER );
    ....

}

Cambialo in qualcosa del genere:

public static void main( String [] args ) {
    JLabel label = new JLabel("Some info");
    JButton button = new JButton("Ok");
    JPanel panel = new JPanel();
     panel.add( button );

    JFrame frame = ... 

    frame.add( label, BorderLayout.NORTH );
    frame.add( panel , BorderLayout.CENTER);
    ....

}

Prima / Dopo

Prima di http://img372.imageshack.us/img372/2860/beforedl1.png Dopo http://img508.imageshack.us/img508/341/aftergq7.png

Altri suggerimenti

O usa semplicemente il layout assoluto. È sul pallet dei layout.

O abilitalo con:

frame = new JFrame();
... //your code here

// to set absolute layout.
frame.getContentPane().setLayout(null);

In questo modo, puoi posizionare liberamente il controllo ovunque tu voglia.

Ancora :)


    import javax.swing.*;

    public class TestFrame extends JFrame {
        public TestFrame() {
            JLabel label = new JLabel("Some info");
            JButton button = new JButton("Ok");
            Box b = new Box(BoxLayout.Y_AXIS);
            b.add(label);
            b.add(button);
            getContentPane().add(b);

        }
        public static void main(String[] args) {
            JFrame f = new TestFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setLocationRelativeTo(null);
            f.setVisible(true);

        }
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top