Featured Posts

Demos EdisoncorSx En el siguiente enlace podrán encontrar algunos demos de las librerías EdisoncorSx http://code.google.com/p/edisoncorsx/downloads/list

Readmore

Actualización EdisoncorSx 0.07 Ha sido un largo tiempo desde la ultima vez que escribí por ultima vez, debo confesar que al blog lo he tenido un poco olvidado(por algunas razones laborales), per...

Readmore

EdisoncorSx Hola amigos, hace algún tiempo que no pósteo nada en absoluto y al blog lo he tenido un poco olvidado, pero mas vale tarde que nunca, en está ocasión...

Readmore

Actualización EdisoncorSx 0.06 Hola como están ahora con poco tiempo para dedicarme al blog, pero bueno por ahí he sacado un tiempo y he realizado algunas actualizaciones, esperando que todas...

Readmore

EdisoncorSx integrado con GoogleCode a través de NetBeans... En este tútorial voy a explicar como puedes tener un Netbeans el proyecto EdisoncorSx y poder tener los cambios que se van a realizar, lo que debes tener es instalado...

Readmore

Edisoncor Weblog Rss

Componentes sobre frame Transparente

Posted on : 08-06-2009 | By : edisoncor | In : java, Netbeans, Swing

8


Frame Transparente A veces se necesita que el JFrame de una aplicación java este transparente pero no los controles para eso es necesario poner el siguiente codigo antes de que el JFrame este visible

        setUndecorated(true);
        setResizable(false);
        AWTUtilities.setWindowOpaque(this, false);

Lo que quita los controles de la ventana y a continuación el JFrame quedara transparente pero no sus componentes, AWTUtilities.setWindowOpaque(this, false); en la versión jdk 7 quedará obsoleto y será remplazado por Window.setBackground(Color) donde al pasar new Color(0,0,0), se logrará el efecto de transparencia Aqui un ejemplo creado en Netbeans

public class VentanaFlotante extends javax.swing.JFrame {
 
    /** Creates new form VentanaFlotante */
    public VentanaFlotante() {
        setUndecorated(true);
        setResizable(false);
        AWTUtilities.setWindowOpaque(this, false);
        initComponents();
    }
 
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    //
    private void initComponents() {
 
        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTree1 = new javax.swing.JTree();
        jPanel2 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();
        jTextField1 = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 
        jScrollPane1.setViewportView(jTree1);
 
        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 164, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(275, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 185, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
 
        jTabbedPane1.addTab("tab1", jPanel1);
 
        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 449, Short.MAX_VALUE)
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 206, Short.MAX_VALUE)
        );
 
        jTabbedPane1.addTab("tab2", jPanel2);
 
        jButton1.setText("cerrar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
 
        jTextField1.setText("jTextField1");
 
        jLabel1.setText("Ventana de prueba");
 
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(24, 24, 24)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 347, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jButton1))
                    .addComponent(jTabbedPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 454, Short.MAX_VALUE))
                .addContainerGap(24, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(18, 18, 18)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 234, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(26, 26, 26)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton1)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
 
        pack();
    }// 
 
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        System.exit(0);
    }
 
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new VentanaFlotante().setVisible(true);
            }
        });
    }
 
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTree jTree1;
    // End of variables declaration
 
}

Update

Ahora puedes encontrar este panel y otros componentes en EdisoncorSx que es una recopilación de estos trabajos y que iré  escribiendo de como utilizarla con ejemplos

Facebook comentarios:

Comments (8)

No puedes incluir la carpeta del ejemplo con todo? Es que prove el codigo pero me da un error en “AWTUtilities.setWindowOpaque(this, false);”. NO es que se ocupa alguna libreria?

Hola, es la primera vez que paso por aca, no conocía tu blog, y tengo una pregunta.
He visto que has colocado el AWTUtilities en varios post, pero tengo conocimiento que al compilar, por ejemplo con netbeans, advierte que es una clase propietaria de Sun y que podría no ser incluida en futuros releases… que piensas de eso?… si es bueno hacer esto en aplicaciones empresariales que lo requieran?

Hola Danilo AWTUtilities.setWindowOpaque(this, false); en la versión jdk 7 quedará obsoleto y será remplazado por Window.setBackground(Color) donde al pasar new Color(0,0,0), se logrará el efecto de transparencia, lo que puedes intentar es

 try {
   Class clazz =  
           Class.forName("com.sun.awt.AWTUtilities");
   Method method = 
          clazz.getMethod("setWindowOpaque", 
                               java.awt.Window.class, 
                               Boolean.TYPE);
   method.invoke(clazz, window, false);
   } catch (Exception e) {
         //Aqui el código de la acción
        //ha realizarse si no soprta la version de jdk
 
   }

Está excelente!!!!!! pero fijate que me tira este error:

Exception in thread “main” java.lang.IllegalArgumentException: The window must use a translucency-compatible graphics configuration
at com.sun.awt.AWTUtilities.setWindowOpaque(AWTUtilities.java:378)

que crees que puedo hacer????
como asignarle una configuración gráfica compatible a la ventana????

Tu estas seguro de que esto funciona???
 
O nos estas tangando???

brother me encanto este tutorial nc si puedas acer uno pero qsea con una imagen cosa q solo se vea la imagen de fondo (no rectangular la imagen) ysus componentes ..xfis..pero no con los componentes creado por codigo sino ia con gui..xfa

me gusto pero como puedo hacer para q se mueva…xq me sale solo a un lado dela pantalla???

Gracias amigo e 10 ando !!!

Write a comment

Advertise Here