Si agrego componentes como JButton
s en el lado este u oeste, ¿cómo evito que se abran al costado de la pantalla? Quiero espacio entre JButton
sy el borde de la pantalla.Java - ¿Cómo evito que BorderLayout EAST abrace el lado de la pantalla?
Respuesta
llamada setBorder
en su JButton como esto:
setBorder(new EmptyBorder(3, 3, 3, 3))
Desde el JavaDoc, un EmptyBorder es una "frontera transparente que ocupa espacio pero no hace ningún dibujo". En mi ejemplo, tomará 3 píxeles, respectivamente, superior, izquierda, inferior y derecha.
Código completo cuyo propósito es sólo para mostrar cómo utilizar EmptyBorder:
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.border.EmptyBorder;
public class ALineBorder {
public static void main(String args[]) {
JFrame frame = new JFrame("Line Borders");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button1 = new JButton("Button1");
button1.setBorder(new EmptyBorder(8, 8, 8, 8));
JButton button2 = new JButton("Button2");
JButton button3 = new JButton("Button3");
button3.setBorder(new EmptyBorder(16, 16, 16, 16));
Container contentPane = frame.getContentPane();
contentPane.add(button1, BorderLayout.WEST);
contentPane.add(button2, BorderLayout.CENTER);
contentPane.add(button3, BorderLayout.EAST);
frame.pack();
frame.setSize(300, frame.getHeight());
frame.setVisible(true);
}
}
Lo más probable es que tenga (o pronto lo tienen) más de un botón en el contenedor, y desea alinear horizontalmente. Así que considerar la posibilidad de los botones dentro de un anidado JPanel
con un GridBagLayout
:
class ButtonPanel extends JPanel {
ButtonPanel() {
setLayout(new GridBagLayout());
}
@Override
public Component add(Component button) {
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridy = nextGridY++;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(3, 3, 3, 3);
super.add(button, gbc);
return button;
}
int nextGridY;
}
A continuación, agregue este panel para el marco principal o panel
BorderLayout va como su nombre lo dice a la frontera (con un BorderLayout
). . Sin embargo, puede anidar cosas dentro, por lo que podría insertar un JPanel con un borde y luego colocar su botón en eso.
También es posible que desee experimentar con el diseñador de GUI en Netbeans. Es realmente muy agradable, y le da mucha ayuda a las cosas que generalmente quiere hacer (como tener un margen hasta el borde, etc.).
- 1. Java BorderLayout stretch east
- 2. Java: cómo evito que WindowClosing cierre realmente la ventana
- 3. BorderLayout no funciona
- 4. ¿Cómo evito que UIScrollView rebote horizontalmente?
- 5. ¿Cómo evito que emacs se divida horizontalmente la pantalla al abrir varios archivos?
- 6. ¿Cómo evito que la etiqueta DIV comience una nueva línea?
- 7. ¿Cómo evito que Java XML Transformer utilizando el método "HTML" agregue la etiqueta <META>?
- 8. ¿Cómo detectar "correctamente" el DPI de la pantalla con Java?
- 9. ¿Cómo evito que Android tome una captura de pantalla cuando mi aplicación pasa al segundo plano?
- 10. setAlignmentY no centrado JLabel en BorderLayout
- 11. ¿Cómo evito las incrustaciones en Android Imageview?
- 12. ¿Cómo evito la repetición en cadenas Java ResourceBundle?
- 13. Java Swing; ¿Cómo lo hago para que el programa comience en la mano derecha de la pantalla?
- 14. ¿Cómo evito que IIS7 elimine mis cookies?
- 15. ¿Cómo evito que estos divs se superpongan?
- 16. ¿Cómo evito que se eliminen ciertas funciones?
- 17. ¿Detecta el tamaño de la pantalla y la densidad de píxeles en el lado del servidor?
- 18. ¿Cómo evito que IVsBuildPropertyStorage.SetItemAttribute escape caracteres especiales?
- 19. ¿Cómo evito que un GtkAspectFrame pierda espacio?
- 20. ¿Cómo se obtiene el ancho de la pantalla en java?
- 21. ¿Cómo evito que mi HTML sea explotable al tiempo que evito los GUID?
- 22. ¿Cómo evito que Eclipse actualice algún directorio?
- 23. Al usar dos marcos en emacs, ¿cómo evito que aparezca el búfer de compilación en ambos?
- 24. ¿Cómo evito la compilación implícita de Java cuando la clase existe en el classpath?
- 25. ¿cómo evito los protectores de pantalla y duermo durante la ejecución de mi programa?
- 26. ¿Cómo evito que se genere Rplots.pdf?
- 27. ¿Cómo obtener la pantalla DPI en Java?
- 28. ¿Cómo evito que IIS compile el sitio web?
- 29. ¿Cómo evito que windbg sea el depurador interactivo?
- 30. ¿Cómo evito que se guarden las contraseñas?
+1: 'setBorder' es la forma correcta, pero configúrelo en su' JPanel'. De lo contrario, debería establecer si para cada botón. –
yup ... En el ejemplo que agregué coloqué un borde diferente en dos botones solo para mostrar el comportamiento. Pero Peter tiene razón. – SyntaxT3rr0r
Establecer explícitamente un borde vacío en un botón también cambia el tamaño y el diseño interior del botón (al menos en Vista con aspecto y sensaciones del sistema y del metal). Definitivamente quiero configurarlo en un panel contenedor. – Ash