Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    456

    (Java) rendere trasparente un label

    Ciao, ho una label che voglio rendere trasparente per non coprire l'immagine di sfondo della finestra (ovviamente il testo della label deve rimanere visibile).

    Ho trasformato la label in JLabel per poter usare setOpaque(), ma appena trasformo la label in JLabel sparisce dal JPanel al quale era legata.
    Qualcuno capisce il perchè?
    Grazie

  2. #2
    Posta il codice...
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    456
    Credo che impazzirai hahaha
    Sicuamente troverai un mare di cazzate, sono novizio



    package sistema_criptaggio;

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.awt.Color.*;
    import java.*;


    public class Sistema_Criptaggio extends Frame
    {
    Button b_esegui_insert;

    Image sfondo;

    TextArea Text_stampasx;
    TextArea Text_stampadx;

    //carico nell'oggetto image sfondo lo sfondo
    public void init()
    {
    sfondo = Toolkit.getDefaultToolkit().getImage("3.jpg");
    }
    // imposto l'immagine come sfondo///////
    public void paint(Graphics g)
    {
    //setBackground(Color.blue);
    g.drawImage(sfondo,0,0,this);
    }




    public Sistema_Criptaggio()
    {

    super("Sistema di Crittaggio Dati");


    setSize(800,400);
    setLocation(50,50);




    // creo la griglia per la disposizione delgi oggetti
    setLayout(new GridLayout(6,2));


    // imposto a null il layout per poter disporre gli oggetti
    setLayout(null);


    // creo i pannelli
    JPanel pannello_superiore = new JPanel();
    Panel pannello_centrale = new Panel();
    Panel pannello_inferiore = new Panel();
    Panel pannello_bottoni = new Panel();
    Panel pannello_divisorio = new Panel();
    Panel pannello_risultati = new Panel();
    Panel pannello_stampa = new Panel();

    // creo la griglia nei panneli
    pannello_superiore.setLayout(new GridLayout(2,2));
    pannello_centrale.setLayout(new GridLayout(1,2));
    pannello_inferiore.setLayout(new GridLayout(1,2));
    pannello_bottoni.setLayout(new GridLayout(1,3));
    pannello_divisorio.setLayout(new GridLayout(1,1));
    pannello_risultati.setLayout(new GridLayout(1,2));
    pannello_stampa.setLayout(new GridLayout(1,2));

    // imposto a null il layout per poter disporre gli oggetti
    // e imposto il setbounds
    pannello_superiore.setLayout(null);
    pannello_superiore.setBounds(5,31,800,30);
    pannello_superiore.setBackground(Color.red);
    pannello_superiore.setOpaque(true);


    pannello_centrale.setLayout(null);
    pannello_centrale.setBounds(5,62,800,30);
    //pannello_centrale.setBackground(Color.white);

    pannello_inferiore.setLayout(null);
    pannello_inferiore.setBounds(5,93,800,30);
    //pannello_inferiore.setBackground(Color.BLUE);

    pannello_bottoni.setLayout(null);
    pannello_bottoni.setBounds(5,124,800,30);
    //pannello_bottoni.setBackground(Color.GREEN);

    pannello_divisorio.setLayout(null);
    pannello_divisorio.setBounds(5,155,800,30);
    //pannello_divisorio.setBackground(Color.red);

    pannello_risultati.setLayout(null);
    pannello_risultati.setBounds(5,186,800,30);
    //pannello_risultati.setBackground(Color.blue);

    pannello_stampa.setLayout(null);
    pannello_stampa.setBounds(5,217,800,300);


    //creo le etichette e le dispongo
    Label Label_superiore = new Label("Nome");
    Label_superiore.setBounds(1,5,70,20);



    Label Label_centrale = new Label("Cognome");
    Label_centrale.setBounds(1,5,70,20);
    // Label_centrale.setBackground(Color.gray);

    Label Label_inferiore = new Label("Indirizzo");
    Label_inferiore.setBounds(1,5,70,20);
    //Label_inferiore.setBackground(Color.pink);

    Label Label_dati_crittati = new Label("Dati Crittati");
    Label_dati_crittati.setBounds(1,5,70,20);
    // Label_dati_crittati.setBackground(Color.red);

    Label Label_dati_non_crittati = new Label("Dati Non Crittati");
    Label_dati_non_crittati.setBounds(390,5,90,20);
    //Label_dati_non_crittati.setBackground(Color.cyan);

    //creo le textarea
    Text_stampasx = new TextArea("Ciao");
    Text_stampasx.setBounds(0,0,390,178);
    Text_stampasx.setEditable(false);
    Text_stampasx.setBackground(Color.white);

    Text_stampadx = new TextArea("Ciao");
    Text_stampadx.setBounds(391,0,396,178);
    Text_stampadx.setEditable(false);
    Text_stampadx.setBackground(Color.white);

    //creo le text e le dispongo
    TextField Text_superiore = new TextField();
    Text_superiore.setBounds(80,5,400,20);

    TextField Text_centrale = new TextField();
    Text_centrale.setBounds(80,5,400,20);

    TextField Text_inferiore = new TextField();
    Text_inferiore.setBounds(80,5,400,20);

    //creo button
    b_esegui_insert = new Button("Esegui Insert");
    b_esegui_insert.setBounds(5,5,100,20);

    Button b_esegui_pulizia = new Button("Pulisci Campi");
    b_esegui_pulizia.setBounds(120,5,100,20);

    Button b_visualizza_dati = new Button("Visualizzati Dati Crittati");
    b_visualizza_dati.setBounds(235,5,150,20);

    //attacco i pannelli alla finestra
    add(pannello_superiore);
    add(pannello_centrale);
    add(pannello_inferiore);
    add(pannello_bottoni);
    add(pannello_divisorio);
    add(pannello_risultati);
    add(pannello_stampa);

    //attacco le label e le text ai pannelli
    pannello_superiore.add(Label_superiore);
    pannello_superiore.add(Text_superiore);

    pannello_centrale.add(Label_centrale);
    pannello_centrale.add(Text_centrale);

    pannello_inferiore.add(Label_inferiore);
    pannello_inferiore.add(Text_inferiore);

    pannello_bottoni.add(b_esegui_insert);
    pannello_bottoni.add(b_esegui_pulizia);
    pannello_bottoni.add(b_visualizza_dati);

    pannello_stampa.add(Text_stampasx);
    pannello_stampa.add(Text_stampadx);


    pannello_risultati.add(Label_dati_crittati);
    pannello_risultati.add(Label_dati_non_crittati);

    init();
    setVisible(true);
    ascoltatore();

    }






    // main ///////////////////////////////////////////////////////////
    public static void main(String[] args) {
    Sistema_Criptaggio sistema_criptaggio = new Sistema_Criptaggio();

    }


    public void ascoltatore()
    {
    b_esegui_insert.addActionListener(new AscoltatoreMenu());
    }

    ///////// classe ascoltatore //////////////////////
    class AscoltatoreMenu implements ActionListener
    {

    public void actionPerformed (ActionEvent e)
    {
    String comando = e.getActionCommand();

    System.out.println("si");
    if(comando == "Esegui Insert")
    {
    Text_stampasx.setText("si dfhskjhfksdfhk\n kjs fhsd ksjhf kshd fkhsdkfhskj ksdfh ksdhj sk kjs fhsd ksjhf kshd fkhsdkfhskj<HTML>");
    System.out.println("sino");
    }
    else
    {

    System.out.println("no");
    }

    }

    }



    }

  4. #4
    Se usi componenti awt, usa SOLO componenti awt.
    Mischiandole ottieni effetti imprevedibili.
    JLabel e' una componente swing e viene dipinta in modo "diverso".

    In generale, non usare awt, a meno di non avere buoni motivi per farlo (nel tuo caso, avendo appena iniziato, non credo tu abbia alcun motivo...)
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  5. #5
    AAAAAAAAAAAARGGHHHH! So' stato un casino di tempo sul costruttore prima di notare il paint()...

    Usa questo:

    codice:
        public void paint(Graphics g) {
            super.paint (g);
            //setBackground(Color.blue);
            g.drawImage(sfondo,0,0,this);
        }
    Come ti ho detto, i componenti Swing (JFrame, JButton, JTextField, etc. etc... tutti derivati da JComponent) vengono "dipinti", in particolare dai metodi paint() delle varie superclassi della tua. Quindi devi richiamare prima paint della tua superclasse (che a sua volta richiamera' paint della sua superclasse e cosi' via...) e poi aggiungere gli elementi che desideri.

    I componenti AWT (Window, Frame, Button, Label, e altri derivati da Component) invece, vengono generati dal sistema operativo. Cio', se da un lato e' comodo, dall'altro rende la portabilita' delle applicazioni un macello: in pratica i componenti awt devono limitarsi a fornire funzionalita' che _TUTTI_ i sistemi operativi possono fornire.

    Contrariamente a quanto potresti immaginare, i componenti Swing sono estensioni (in senso lato) dei componenti awt, nel senso che la classe JComponent estende la classe Component (ma JButton non estende Button!!!)

    Bene, spero di averti confuso le idee...
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

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 © 2020 vBulletin Solutions, Inc. All rights reserved.