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

    [JAVA] JPanel + JLabel ...+Sfondo = solo JPanel + sfondo

    Scusate ho un problema inizialmente ho un jsplit con un solo JPanel poi a run time ci piazzo un altro JPanel con etichetta annessa ....carico un'immagine di sfondo e l'etichetta si mette sotto lo sfondo ....è strano perchè se è sfondo non può essere sopra!! ca..o

    il layout è null

    qualcuno ha idea ...?
    Andrea
    grazie

  2. #2
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    posta il codice che ti do una mano..
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  3. #3

    ok grande!!!

    dovrebbe esserci tutto il necessario
    se ti serve altro sono qua e ti risp al volo

    Grazie!
    ....

    public class CephaloxPanel extends JPanel{

    public Image image;

    public CephaloxPanel() {
    super();
    }

    public void set_Image (Image img) {
    this.image = img;
    }

    public void paint(Graphics g) {
    super.paint(g);

    if(image != null)
    g.drawImage(image, 0, 0, this);
    }

    }

    classe Cephalox....

    private CephaloxPanel side_image;

    public Cephalox() {

    this.info = new javax.swing.JLabel();
    this.side_image = new CephaloxPanel();
    this.side_image.setBackground(Color.BLACK);

    init_keyPoints();
    initComponents(); //inizializza tutta la finestra
    this.setSize(600, 500);

    jSplitPane1.setRightComponent(side_image);

    info.setText("Carica immagine...");
    info.setForeground(Color.GREEN);
    info.setFont(new java.awt.Font("Bitstream Vera Sans", 0, 10));

    side_image.setLayout(null);
    side_image.add(info);

    info.setBounds(20, 10, 300, 30);

    }


    private void loadActionPerformed(java.awt.event.ActionEvent evt) {
    try {

    JFileChooser fc = new JFileChooser();
    fc.showDialog(this, "Scegli l'immagine da processare");
    fc.setFont(new java.awt.Font("Bitstream Vera Sans", 0, 10));

    f = fc.getSelectedFile();


    ///////////// imposta l'immagine di sfondo ///////////////
    this.side_image.set_Image( Toolkit.getDefaultToolkit().createImage(f.getAbsol utePath())
    );

    this.info.setBounds(20, 10, 300, 30);
    this.info.setText("Immagine caricata!");

    side_image.add(info);

    this.repaint();

    this.validate();

    }
    catch (Exception e) {}
    }

  4. #4
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    guarda il codice sembra giusto... cmq fregatene.. fai così che va sicuro e senza problemi

    copia questo codice così com'è

    codice:
    // CLASSE INTERNA PER LO SFONDO
    	class ContentPanel extends JPanel{         
    		Image bgimage = null;
    		ContentPanel(String imagename){             
    			if(imagename != null){             
    				MediaTracker mt = new MediaTracker(this);                 
    				bgimage = Toolkit.getDefaultToolkit().getImage(imagename); 
    				mt.addImage(bgimage, 0); 
    				try{ 
    					mt.waitForAll(); 
    				} catch (InterruptedException e){ 
    					e.printStackTrace(); 
    				}                 
    			} 
    		} 
    		
    		
    		     
             
    		protected void paintComponent(Graphics g){ 
    			super.paintComponent(g); 
    			if(bgimage != null){ 
    				int imwidth = bgimage.getWidth(null); 
    				int imheight = bgimage.getHeight(null); 
    				if((imwidth > 0) && (imheight > 0)){                 
    					for(int y = 0; y<getHeight(); y+=imheight){ 
    						for(int x = 0; x<getWidth(); x+=imwidth){                     
    							g.drawImage(bgimage, x, y, null); 
    						} 
    					} 
    				} 
    			}   	          
    		} 
    
    	}

    e con questo lo richiami da dove vuoi...

    tuoPanel.setContentPane(new ContentPanel("img/sfondo.jpg"));
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  5. #5
    ok fatto ma alla fine non esiste un metodo setContentPane
    oppure fare anche ...

    tuoPanel = new ContentPanel("img/sfondo.jpg");

    non va neanche cosi

    grazie comunque della risposta

  6. #6
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    come no ???
    non lo devi applicare ad un jPanel ???
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  7. #7
    Si ma non vede questa operazione
    o non esiste ...non so?!?!

    ma perchè da te c'e' (se c'entra qualcosa)io uso... J2SE

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Hai due possibilità: o ridefinisci il metodo paintComponent() al posto del metodo paint() oppure utilizzi una JLabel per visualizzare l'immagine e tutti gli oggetti che devono stare sopra li aggiungi, man mano, utilizzando il metodo add(Component, int) utilizzando questa sintassi:
    codice:
    mioPannello.add(mioComponente, 0);   // lo 0 indica di inserire l'oggetto
                                         // all'inizio della lista di priorità
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9

    Olee!

    ok risolto!
    Grazie a tutti
    siete fantastici!
    Andrea

  10. #10
    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 dei componenti? Con quel codice, lo sfondo è sotto i componenti, io invece voglio il contrario...come posso fare? Ah il layout del panel è gridbaglayout

    grazie!!!

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