2012-01-14 32 views
7

¿cómo puedo agregar espacio entre JFrame y un JPanel inserta en este JFrame? Insertaría el espacio de forma que los elementos dentro del JPanel no aparecieran demasiado cerca en el JFrameagregar espacio entre JFrame y JPanel

Respuesta

11

Establezca el borde del JPanel con un EmptyBorder con los parámetros adecuados.

es decir,

// caveat: code not tested 
myPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); 

Si el JPanel ya tiene un borde, entonces se puede utilizar ya sea un borde compuesto o envolver el JPanel en otro JPanel, digamos usando BorderLayout y en la posición BorderLayout.CENTER, y dar el envoltorio JPanel un borde vacío.

+1

Para los paneles 'interior' que van dentro de otros paneles, otra manera de introducir el espacio está proporcionando argumentos al constructor de la disposición del panel matriz . Los diseños a menudo tienen un constructor que permite especificar el espaciado horizontal y vertical entre los componentes. –

+0

@Andrew: tan cierto. ¡Gracias por la aclaración! –

0

¿Por qué no utiliza GridBagLayout y setBounds para los componentes? los componentes se mantendrán en la posición que desee.

Aquí un ejemplo: `

'import javax.swing.*; 
import java.awt.*; 
public class set_Components_where_i_want { 
    public static void main(String[] args){ 
     JFrame frame = new JFrame(); 
     frame.setLayout(null); 
     //make new Components 
     JButton b1 = new JButton("One"); 
     JButton b2 = new JButton("Two"); 
     JButton b3 = new JButton("Three"); 
     //add Components first 
     frame.add(b1); 
     frame.add(b2); 
     frame.add(b3); 
     //get frame inserts 
     Insets insets = frame.getInsets(); 
     Dimension size = b1.getPreferredSize(); 
     //set position here 
     b1.setBounds(50 + insets.left, 10 + insets.top, 
       size.width, size.height); 
     size = b2.getPreferredSize(); 
     b2.setBounds(110 + insets.left, 80 + insets.top, 
       size.width, size.height); 
     size = b3.getPreferredSize(); 
     b3.setBounds(300 + insets.left, 60 + insets.top, 
       size.width + 100, size.height + 40); 
     //set size for the frame so it can contain all Components 
     frame.setSize(600 + insets.left + insets.right, 
        250 + insets.top + insets.bottom); 
     // make the frame be visible 
     frame.setVisible(true); 
} 

}`