Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    settare immagine sfondo a org.eclipse.swt.widgets.Composite

    Salve a tutti,
    sto realizzando un progetto in Eclipse RCP e ho bisogno di mettere una immagine di sfondo ad un oggetto org.eclipse.swt.widgets.Composite.
    Ho usato il metodo setBackgroundImage (Image) e fin qui ci siamo.
    Il problema è: come creo l'immagine?
    Nel mio progetto ho una situazione del genere:
    org.xx.xx
    --- src
    ------classi
    ---icons
    ------trova.png

    Io ho scritto
    Image image = new Image(Display.getCurrent(), "icons/trova.png");
    ma non la trova anche se effettivamente esiste.
    Come faccio? Non voglio inserire il path assoluto...

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Prova così:
    codice:
    Image img = (new ImageIcon(NomeDellaTuaClasse.class.getResource("/icons/trova.png"))).getImage();
    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

  3. #3
    Non va... mi dà errore in top.setBackgroundImage(image) non accetta il tipo Image ottenuto con le istruzioni che mi hai suggerito
    Io faccio così:

    Image image = new Image(Display.getCurrent(), "C:/sfondi/sfondo.gif");
    top.setBackgroundImage(image);

    Ma nel path devo inserire quello assoluto e non quello relativo.
    Come faccio?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Io non conosco quel package, evidentemente la classe Image a cui fa riferimento non è java.awt.Image, visto che non possiede alcun costruttore come quello che intendi utilizzare tu.

    Il problema del path dipende molto da cos'hai per le mani: se hai un JAR non potrai mai raggiungere le immagini al suo interno utilizzando un path assoluto di tipo fisico. Ma le puoi raggiungere utilizzando, appunto, getResource().

    Ora, le uniche cose che puoi fare sono andare a verificare la documentazione della classe Image del package che stai utilizzando (per verificare le firme del costruttore e capire quali formati immagine sono supportati da tale classe) e controllare se esiste il file C:\sfondi\sfondo.gif.


    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

  5. #5
    grazie mille per l'aiuto, ho risolto con ImageData

  6. #6

    se può servire la soluzione

    La soluzione che ho trovato è questa (cercando di aggirare il problema precedente):

    InputStream stream = NomeClasse.class.getResource("/sfondi/sfondo.gif").openStream();

    Image image = new Image(Display.getCurrent(), stream);

    Non ho più usato ImageData perchè dava problemi.

    Posto la soluzione perchè magari può servire a qualcuno.

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.