GUI-BOX | EL CÓDIGO ES

ASOMBROSO. PASIÓN. DIVERTIDO. ESTRESANTE. SATISFACCIÓN.

LOGO

Área de descarga

Java: cómo mover un frame undecorated (para personalizarlo)

En este tutorial les muestro cómo pueden hacer para personalizar una ventana al 100% y poder agregar esos eventos de arrastrarla por la pantalla.

Esto es útil si estas personalizando una ventana con alguno de mis diseños (o diseños que hagas o consigas :v )

Explicación en vídeo:

Explicación paso a paso

  • Deben de tener una interfaz de algún proyecto, pueden ver mis otros tutoriales para que hagan una interfaz personalizada desde cero, o bien, trabajar en una que ya tengan.
  • Deben de hacer el frame sin decoración (“undecorated”), para ello van a propiedades y marcan la casilla “undecorated”:
  • Después en el código, dentro del constructor, ponen esta línea:

AWTUtilities.setWindowOpaque(this, false);

  • También pueden poner esta línea, que es para centrar el frame en la pantalla:

this.setLocationRelativeTo(null);

Ahora, deberán poner una etiqueta (JLabel) en la posición que quieran, para que sea como la cabecera, o el área de donde se podrá arrastrar el frame: 

  • Cambien el cursor de la etiqueta, pongan el cursor de movimiento, para indicarle al usuario que en esa área puede arrastrar la ventana:
  • Ahora, vamos con los eventos sobre la etiqueta, necesitamos los eventos mouse pressed y mouse dragged, ya que ocupamos las coordenadas de donde da clic y las coordenadas cuando arrastra la ventana.
    Comenzamos con el pressed, elegimos eventos de la etiqueta -> eventos ->mouse ->pressed
  • Dentro del mouse pressed, ponemos estas lineas:

x = evt.getX();
y = evt.getY();

  • Las variables x e y, deben ser declaradas globales (fuera del método, al inicio de la clase o al fin, no importa).
  • Ahora, seleccionamos eventos de a etiqueta, eventos -> mouseMotion -> mouseDragged. 
    Dentro del mouse Dragged, ponemos esta línea: 

this.setLocation(this.getLocation().x + evt.getX() - x, this.getLocation().y + evt.getY() - y);

NOTA:  pongan los paneles o etiquetas de fondo en “opaque” = false, para que solo se vean los componentes que ustedes quieran.

1 comentario

  • Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio utiliza cookies para mejorar tu experiencia y nuestro servicio . Leer más