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

    non deve essere un numero sopra all'altro

    Ho un problema che per voi esperti è sicuramente banale. Dal codice qui sotto si vede che ho creato un JPanel al quale ho inserito un bottone. Cliccando il bottone viene generato un numero e disegnato sul pannello. Tornando a ripremere il pulsante vorrei che il nuovo numero generato cancellasse il precedente... ma ahimè così non è... Dove ho sbagliato????

    codice:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    
    public class StampaNumeriTest
    {
    	public static void main(String[]args)
    	{
    		FinestraTest frame = new FinestraTest();
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setVisible(true);
    	}
    }
    
    class FinestraTest extends JFrame
    {
    	public FinestraTest()
    	{
    		this.setSize(300,200);
    			
    		Container contenitore = this.getContentPane();
    		PannelloTest panel = new PannelloTest();
    		contenitore.add(panel);
    	}
    }
    
    class PannelloTest extends JPanel
    {
    	public PannelloTest()
    	{
    		JButton bottoneEstrazione = new JButton("Estrai Numero");
    		
    		this.add(bottoneEstrazione);
    		
    		AzioneEstrazione azioneEstrazione = new AzioneEstrazione();
    		
    		bottoneEstrazione.addActionListener(azioneEstrazione);
    	}
    	
    	public void paintComponent(Graphics g)
    	{
    		super.paintComponent(g);
    		
    		if(numeri.size()>0)
    		{
    			for(int i=0; i<numeri.size(); i++)
    			{
    				g.drawString(numeri.get(i)+"",100,80);
    			}
    		}
    	}
    	
    	private class AzioneEstrazione implements ActionListener
    	{
    		public void actionPerformed(ActionEvent event)
    		{
    			Integer numeroEstratto = (int)(Math.random()*90);
    			numeri.add(numeroEstratto);
    			repaint();
    		}
    	}
    	
    	private ArrayList<Integer> numeri = new ArrayList<Integer>();
    }

    il lupo perde il pelo ma non il vizio!
    http://www.pateam.eu
    http://pateam.altervista.org

  2. #2
    Non sò coa risponderanno gli altri, ma il mio personalissimo parere è quello di NON ridefinire il metodo paintComponent.

    Basta che nel JPanel ci metti una JLabel e che la aggiorni ogni volta.
    Questo lo farei cambiando così:

    codice:
    class PannelloTest extends JPanel
    {
        JLabel etichetta = new JLabel ("");
        add (etichetta);
    }
    In questo modo hai creato la tua JLabel con testo nullo e l'hai applicata al JPanel.

    codice:
    private class AzioneEstrazione implements ActionListener
    	{
    		public void actionPerformed(ActionEvent event)
    		{
    			Integer numeroEstratto = (int)(Math.random()*90);
    			numeri.add(numeroEstratto);
                            String parziale = etichetta.getText ();
                            etichetta.setText (parziale + ", " + numeroEstratto);
    			repaint();
    		}
    	}
    	
    	private ArrayList<Integer> numeri = new ArrayList<Integer>();
    In questo modo aggiorni il testo della JLabel ad ogni pressione del tasto.

  3. #3
    ho provato a fare come dici te Gil1688 ma mi sembra che non sia proprio ciò che volevo... adesso mi crea un orribile effetto...

    il lupo perde il pelo ma non il vizio!
    http://www.pateam.eu
    http://pateam.altervista.org

  4. #4
    ho capito il problema... non era una questione di repaint ma solamente che l'array... in quanto tale... all'array venivano aggiunti altri numeri... e logicamente paintComponent non poteva sapere che proprio l'ultimo volevo che venisse mostrato... e così li disegnava tutti.

    il lupo perde il pelo ma non il vizio!
    http://www.pateam.eu
    http://pateam.altervista.org

  5. #5
    Un orribile effetto? XD Ma che hai fatto?
    Calcola che da come avevi postato il codice mi avevi fatto capire che tu li volevi volontariamente tutti i numeri, e non solo l'ultimo XD

    Comunque l'importante è che hai risolto

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.