Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Panel Trasparente!?

    Ciao sto sviluppando un'applicazione java per il digitale terrestre,
    è ho la necessità di rendere trasparente un pannello.
    Ho già provato con l' istruzione:

    Color c = new Color (R, G, B, alpha);
    Panel.setBackground(c);

    credendo che il parametro alpha definisse la trasparenza del pannello, ma il codice non restituisce alcun risultato.

    Qualcuno mi può aiutare?
    Esiste un altro metodo?
    C'è un errore nel mio codice?

    GRAZIE. :master:

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    prova con

    pannello.setOpaque(true/false);
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Ciao,
    Grazie per avermi risposto.
    Facendo delle prove mi sono reso conto che in realtà per avere un pannello trasparente è necessario usare entrambe le istruzioni:

    Color c = new Color (R, G, B, alpha);
    Panel.setBackground(c);
    Panel.setOpaque(true);

    Il livello di trasparenza viene gestito modifgicando opportunamente il parametro alpha, e...FUNZIONA!!!!

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da ddonline
    Ciao,
    Grazie per avermi risposto.
    Facendo delle prove mi sono reso conto che in realtà per avere un pannello trasparente è necessario usare entrambe le istruzioni:

    Color c = new Color (R, G, B, alpha);
    Panel.setBackground(c);
    Panel.setOpaque(true);

    Il livello di trasparenza viene gestito modifgicando opportunamente il parametro alpha, e...FUNZIONA!!!!
    strano, per rendere trasparenti le jlabel nelle di una jtable mi e' bastato setOpaque!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    ciao a tutti, riesumo questo vecchio topic per non aprirne uno nuovo...
    sto sviluppando un applicazione grafica in cui all'interno di un JFrame inserisco due JPanel (due classi che estendono JPanel) all'interno dei quali sono presenti in uno un immagine, mentre nell'altro una forma geometrica disegnata tramite Graphics2D..
    il problema e' che quando effettuo un animazione i 2 pannelli si sovrappongono e si vede solo uno dei due.. ho provato con this.setOpaque(false) ma niente, ho scoperto qui dell'alpha channel e volevo saperne un po di piu.. ho provato ad impostarlo su 200,200,200,0 (0 da quanto ho letto sulle api dovrebbe essere trasparente) ma anche in questo caso niente trasparenza! avete qualche idea??
    grazie

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Ecco un esempio che mostra 3 pannelli sovrapposti (con JLayeredPane) in cui vengono usati dei colori con canale alpha.

    codice:
    import java.awt.*;
    import java.net.*;
    import javax.swing.*;
    
    public class TestFrame extends JFrame
    {
        private JLayeredPane layeredPane;
    
        public TestFrame ()
        {
            super ("Test Frame");
            setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
            setSize (300, 300);
    
            layeredPane = new JLayeredPane ();
            getContentPane ().add (layeredPane);
    
            try {
                ImageIcon icon = new ImageIcon (new URL ("http://img231.imageshack.us/img231/4627/bluebackgroundvb2.jpg"));
        
                ImgPanel imgPanel = new ImgPanel (icon.getImage ());
                MyPanel panel1 = new MyPanel (new Color (255, 255, 0, 64));
                MyPanel panel2 = new MyPanel (new Color (255, 0, 0, 64));
        
                imgPanel.setBounds (0, 0, 300, 300);
                panel1.setBounds (120, 20, 100, 100);
                panel2.setBounds (60, 60, 140, 140);
    
                layeredPane.add (imgPanel, new Integer (0));
                layeredPane.add (panel1, new Integer (1));
                layeredPane.add (panel2, new Integer (2));
            }
            catch (Exception e) {
                System.out.println (e);
            }
        }
    
        public static void main (String[] args)
        {
            SwingUtilities.invokeLater (new Runnable ()
            {
                public void run ()
                {
                    TestFrame f = new TestFrame ();
                    f.setVisible (true);
                }
            });
        }
    }
    
    
    class ImgPanel extends JPanel
    {
        private Image img;
        
        public ImgPanel (Image img)
        {
            this.img = img;
        }
    
        public void paintComponent (Graphics g)
        {
            g.drawImage (img, 0, 0, this);
        }
    }
    
    class MyPanel extends JPanel
    {
        private Color c;
    
        public MyPanel (Color c)
        {
            this.c = c;
        }
    
        public void paintComponent (Graphics g)
        {
            g.setColor (c);
            g.fillOval (0, 0, getWidth(), getHeight());
        }
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    grande! grazie al codice che hai postato sono riuscito a visualizzare tutto correttamente..
    volevo sapere un'altra cosa.. ho una terza immagine da inserire sul frame, e siccome e' indipendente dalle altre due, e deve intercettare i movimenti del mouse pensavo di inserirla su di un GlassPane.. e' una scelta valida?
    cmq provando ad inserirlo con
    frame.getGlassPane();
    frame.setGlassPane(JPanelTrasparenteConImmagine);
    non visualizza piu nulla...
    dove sbaglio??
    grazie ancora

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da seimejote
    grande! grazie al codice che hai postato sono riuscito a visualizzare tutto correttamente..
    volevo sapere un'altra cosa.. ho una terza immagine da inserire sul frame, e siccome e' indipendente dalle altre due, e deve intercettare i movimenti del mouse pensavo di inserirla su di un GlassPane.. e' una scelta valida?
    Non puoi inserirla nel layered pane? Lo metti ad un layer alto. Quel numerino che ho usato nelle add:

    layeredPane.add (imgPanel, new Integer (0));
    layeredPane.add (panel1, new Integer (1));
    layeredPane.add (panel2, new Integer (2));

    non è così a caso .... è il layer. Più è basso e più sta sotto, più è alto e più sta sopra.

    Inoltre, giusto per precisare, io ho fatto l'esempio creando un JLayeredPane che ho messo nel content pane. Il root pane di JFrame ha già un JLayeredPane ... basterebbe anche solo usare quello.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    50
    e invece volendo avere un pannello con un'immagine di sfondo con degli spazi trasparenti dentro i quali mettere delle jlabel? Con quel codice, lo sfondo è sotto i componenti, io invece voglio il contrario cioè lo sfondo sopra le jlabel...come posso fare? Ah il layout del panel è gridbaglayout

    grazie!!!

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    50
    up

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.