14/2/10

Ventana sin bordes en Java


La clase WINDOW desciende de Container de la biblioteca JAVA.AWT, esta clase permite implementar ventanas sin bordes y sin menus.
Esta clase es la base para ventanas mas familiares como FRAME (mas completa) y DIALOG (implementa ventanas de dialogo).

CONTAINER---WINDOW---FRAME
                                    ---DIALOG

La clase que te presento a continuacion, implementa una pequeña ventana "sin bordes", ademas coloca unos objetos como labels, button, y panel, ademas de colocar una imagen con JLabel. Tambien puede implementarse acciones a los objetos. Este tipo de objeto no puede crearse graficamente desde java, todo tiene que ser escrito en codigo java puro, creo que existen algunos herramientas para utilizar este objeto con eclipse o j++, no estoy seguro.

El codigo esta por demas comentado


import java.awt.Button;
import java.awt.Color;
import java.awt.Event;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.Window;
import javax.swing.JLabel;

/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class miventana extends Window{
    
    public miventana(Frame parent){
        super(parent);                
        //tamaño de la ventana
        resize(400, 300);        
        //contenedor
        Panel p = new Panel();
        //color de fondo
        p.setBackground(new Color(100,40,90));
        //JLabel con imagen de fondo
        JLabel lbImagen = new JLabel();
        //se carga la imagen en el JLabel
        lbImagen.setIcon(new javax.swing.ImageIcon(getClass().getResource("banner.jpg")));        
        p.add(lbImagen);
        //Label simple
        p.add(new Label("Ventana sin bordes"));        
        // TexFields
        p.add(new TextField("by Mouse 2010"));
        //un par de botones
        p.add(new Button("Cerrar"));
        p.add(new Button("Cancelar"));
        add("Center", p);
        //posicion de la ventana
        move(400, 300);
    }

    /* accion para el boton CERRAR */
    @Override
    public boolean action(Event evt, Object arg)
    {
        boolean result = false;
        if("Cerrar".equals(evt.arg))
        {            
            result = true;
            //salir de aplicacion
            System.exit(0);            
        }
        return result;
    }   
}

El tipo de uso que se le puede dar a este tipo de ventana, creo que es más que obvio

Aqui abajo una vista mas amplia de como queda en pantalla

Mas claro agua, pero por si la dudas, bajate el codigo desde aqui. escrito en netbeans 6.0
Click para descargar

3 comentarios:

  1. Hola amigo veo q todos tus ejemplos en netBeans son muy buenos pero mi pregunta es lo siguiente mira yo kiero saber como kito los bordes en un Frame de la libreria javax.swing.JFrame; ah y tambien kiero saber como creo un instalador en netbeans de un proyecto hecho que no sea el de (*.jar) sino de punto(*.exe), he visto q en VisualStudio se puede crear pero eh buscado en internet como crearlo en netbeans pero no hay te agradecia q publiques un video para esos dos temas.Gracias espero tu pronta respuesta.Mi correo es on_ly_14@hotmail.com

    ResponderEliminar
  2. Oye jc-mouse tu ejemplo esta bien, pero al igual que al usar en un JFrame con el codigo de "setUndecorated=(true)" quieta el borde de la ventana pero he querido usar este tipo de ventanas sin borde el unico inconveniente que tiene ambas es que la ventana no puede ser arrastrada ni movida a ningun lugar.
    Tu sabes como ocultar el border pero poder mover la ventana de un lugar a otro con el mouse??

    ResponderEliminar
  3. También me gustaría saber cómo hacer que la ventana se pueda arrastrar/mover cuando tiene la opción "setUndecorated=(true)".

    ¡Gracias! Buena info.

    ResponderEliminar