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

    [Java GUI] Strano effetto inchiostro in JScrollPane

    Salve,

    nel codice seguente ho provato ad applicare uno sfondo all'oggetto JScrollPane (la classe BgPanel è una estensione della classe JPanel che ho creato)

    codice:
    		BgPanel pannelloPartite = new BgPanel(Accesso.creaIcona("img/cuboPanelPartite.png"), 0, 0);
    		
    		for(int i=0; i<partite.length; i++)
    		{
    			pannelloPartite.add(new JLabel(partite[i]));
    		}
    		
    		pannelloPartite.setX(pannelloPartite.getWidth());
    		pannelloPartite.setY(pannelloPartite.getHeight());
    		
    		JScrollPane jsp = new JScrollPane(pannelloPartite);
    		jsp.setOpaque(false);
    		jsp.setPreferredSize(new Dimension(195, 150));
    Il risultato per quanto riguarda l'applicazione dello sfondo e la visualizzazione dei labels è ottima, ma se provo a far scorrere lo scroll ottengo uno strano trascinamento del nero (colore dei labels) lungo il verso orizzontale dello scroll!

    Ho provato a sostituire al pannello una textarea, poi aggiunta ad una istanza di BgPanel ma il problema rimane.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java GUI] Strano effetto inchiostro in JScrollPane

    Originariamente inviato da VincenzoTheBest
    Il risultato per quanto riguarda l'applicazione dello sfondo e la visualizzazione dei labels è ottima, ma se provo a far scorrere lo scroll ottengo uno strano trascinamento del nero (colore dei labels) lungo il verso orizzontale dello scroll!
    Difficile dire cosa non va. Quasi sicuramente hai fatto qualcosa che non è appropriato. Bisognerebbe vedere meglio come è fatta la tua classe BgPanel.

    Poi scusa una cosa: quei setX/setY li hai di certo definiti nella tua classe ma ... per fare cosa? E tieni presente che in quel punto della inizializzazione, getWidth()/getHeight() (sul tuo pannelloPartite ma vale in generale per qualunque componente) danno 0 e basta. Quindi che ti serve?? La dimensione "corrente" reale di un componente infatti non è stata ancora calcolata e ciò verrà fatto solo dopo che il componente diventa "realized".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    La classe è questa qui:

    codice:
    public class BgPanel extends JPanel{
      	
      	public BgPanel(ImageIcon imgIcon, int x, int y)
      	{
      		imgSelected=imgIcon.getImage();
      		this.x=x;
      		this.y=y;
      	}
    
      	public void setX(int x)
      	{
      		this.x=x;
      	}
      	
      	public void setY(int y)
      	{
      		this.y=y;
      	}
    
      	public void paintComponent(Graphics g)
      	{
      			for(int i=0; i<=this.x; i++)
      			{
      				for(int j=0; j<=this.y; j++)
      					g.drawImage(imgSelected, i, j, null);
      			}
      	}
      	
      	private Image imgSelected;
      	private int x, y;
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Io continuo a non capire a cosa ti servono quelle 2 proprietà x e y. Quando istanzi il BgPanel passi 0,0. Quando fai i due setX/setY ti ho già detto che in quel momento getWidth()/getHeight() danno 0. Quindi???

    E che cosa vuoi fare con quei 2 cicli for annidati?? Vorresti forse "spalmare" la immagine su tutta la superficie effettiva del pannello?? Ok, si può fare ... ma non come hai fatto tu. Innanzitutto fai dei banali incrementi di 1 con i++ e j++. Così non spalmi un bel niente .... ma poi comunque ci sono quelle 2 variabili x e y di cui non vedo il senso.

    Insomma: vuoi spalmare la immagine? C'è un esempio bello pronto nei miei Java Examples sezione AWT/Swing - Graphics. Vuoi fare altro? Allora precisa cosa vuoi fare .... perché altrimenti non ho proprio capito!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.