sirve setlayout que para java setbounds

java - que - setlayout



¿Qué es setBounds y cómo lo uso? (7)

No puedo encontrar nada en setBounds, para qué sirve o para qué sirve realmente su función. ¿Podría alguien aclararme sobre esto? ¡Muchas gracias!


Aquí hay un breve párrafo de este artículo Cómo hacer marcos (Windows principal) - Los Tutoriales de Java - Oracle que explica qué método setBounds hace además de algunos otros métodos similares:

El método del paquete dimensiona el marco de modo que todo su contenido esté en o por encima de sus tamaños preferidos. Una alternativa al paquete es establecer un tamaño de marco explícitamente llamando a setSize o setBounds (que también establece la ubicación del marco) . En general, es preferible utilizar el paquete que llamar a setSize, ya que el paquete deja al administrador de diseño de cuadros a cargo del tamaño del cuadro, y los administradores de diseño son buenos para ajustarse a las dependencias de la plataforma y otros factores que afectan el tamaño del componente.

los parámetros de setBounds son (int x, int y, int ancho, int alto) xey son la posición / ubicación y el ancho y alto definen el tamaño / dimensión del marco.


En realidad, un componente Swing tiene múltiples dimensiones, como:

  • tamaño actual - setSize () y setBounds () establece esto
  • tamaño mínimo - setMinimumSize () establece esto
  • tamaño preferido - setPerferredSize () establece esto
  • Tamaño máximo: setMaximumSize () establece esto.

SetBounds es un acceso directo para establecer el tamaño actual más la ubicación del widget si no utiliza ningún administrador de diseño.

Si usa un administrador de diseño, es responsabilidad del mismo diseñar los componentes, teniendo en cuenta el tamaño preferido que establezca, y asegurarse de que el componente nunca sea más pequeño que su tamaño mínimo o más grande que su tamaño máximo.

En este caso, el layoutManager llamará setSize (o setBounds), y realmente no puede controlar la posición o dimensión del componente.

El objetivo de usar un administrador de diseño es tener una plataforma y una forma independiente del tamaño de la ventana para diseñar los componentes automáticamente , por lo que no espera llamar a setSize desde su código.

(Comentario personal: hay gestores de diseño con errores, yo personalmente los odio a todos y me lancé a los míos, lo que ofrece la flexibilidad de MigLayout sin la curva de aprendizaje).


Este es un método de la clase java.awt.Component . Se utiliza para establecer la posición y el tamaño de un componente:

setBounds

public void setBounds(int x, int y, int width, int height) Moves and resizes this component. The new location of the top-left corner is specified by x and y, and

el nuevo tamaño se especifica por el ancho y la altura. Parámetros:

  • x - la nueva coordenada x de este componente
  • y - la nueva coordenada y de este componente
  • ancho - el nuevo ancho de este componente
  • altura - la nueva altura de este componente

x e y como se y arriba corresponden a la esquina superior izquierda en la mayoría de los casos (¿todos?).

Es un acceso directo para setLocation y setSize .

Esto generalmente solo funciona si el layout / layout manager no existe, es decir, nulo.


Hay una respuesta por @hexafraction, Él había especificado que xey eran la esquina superior derecha, lo cual es incorrecto, esas son la esquina superior izquierda.

También he proporcionado la fuente por favor verifíquelo.

public void setBounds(int x, int y, int width, int height)

Mueve y redimensiona este componente. La nueva ubicación de la esquina superior izquierda está especificada por x e y, y el nuevo tamaño se especifica por ancho y alto. Este método cambia la información relacionada con el diseño y, por lo tanto, invalida la jerarquía de componentes.

Parámetros:

x - la nueva coordenada x de este componente

y - la nueva coordenada y de este componente

ancho - el nuevo ancho de este componente

altura - la nueva altura de este componente

fuente: - setBounds


La forma en que funcionan las UIs de Java Swing es que para cada JPanel siempre hay un LayoutManager que decide dónde colocar exactamente sus componentes. Cada administrador de diseño funciona de manera diferente, por lo que si usa, por ejemplo, un BorderLayout, el LayoutManager no usa setBounds (), sino que la ubicación de los componentes se decide por el Este, Oeste, Sur, Norte, Centro.

Sin embargo, para el NullLayoutManager (en caso de que haya usado un new JPanel(null) ), cada componente debe tener una coordenada x e y. Sidenote estúpido: si su UI fuera tridimensional, también habría una coordenada az.

Entonces, con public void Component.setBounds(int x, int y, int width, int height) usted especifica dónde se coloca su componente y cuántos píxeles es ancho y alto.

Aquí hay un ejemplo:

import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class JTableInNullLayout { public static void main(String[] argv) throws Exception { JPanel panel = new JPanel(null); JLabel helloLabel = new JLabel("Hello world!"); helloLabel.setBounds( 10, 50, 60, 20 ); // x, y, width, height panel.add(helloLabel); JFrame frame = new JFrame(); frame.add(panel); frame.setPreferredSize( new Dimension(200,200)); frame.pack(); frame.setVisible(true); } }


setBounds se utiliza para definir el rectángulo delimitador de un componente. Esto incluye su posición y tamaño.

Se utiliza en varios lugares dentro del marco.

  • Es utilizado por el administrador de diseño para definir la posición y el tamaño de un componente dentro de su contenedor primario.
  • Es utilizado por el subsistema de pintura para definir los límites de recorte al pintar el componente.

En su mayor parte, nunca debe llamarlo. En su lugar, debe usar los administradores de diseño apropiados y permitirles determinar la mejor manera de proporcionar información a este método.


Puede usar setBounds(x, y, width, height) para especificar la posición y el tamaño de un componente GUI si establece el layout en null . Entonces (x, y) es la coordenada de la esquina superior izquierda de ese componente.