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

    Cancellare un un rettangolo con fillrect

    Salve a tutti, se io provo a creare un rettangolo o qualunque altra figura usando il componente graphics es: g.fillRect(x, y, 50, 50);

    usando un timer che aggiorna x ++; e y++; teoricamente dovrebbe far muovere questo
    rettangolo con una traiettoria obliqua. il risultato lo ottengo, ma purtroppo non viene cancellato il triangolo precedente, in pratica ottengo l'effetto di un pennello unto di vernice che colora un foglio bianco. ho provato tipo a usare repaint(); guardando ulteriori soluzioni ma non trovo soluzioni. qualcuno può aiutarmi?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Posta maggiori dettagli.
    Ad esempio, il metodo in cui usi l'oggetto Graphics, il tipo di classe che stai estendendo e una parte del codice in cui la usi.


    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
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Un banale esempio funzionante:
    codice:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    
    public class MioRettangolo extends JFrame implements ActionListener {
    
       private class MioPannello extends JPanel {
          private int x;
          private int y;
    
          @Override
          public void paintComponent(Graphics g) {
             g.setColor( Color.BLUE );
             g.fillRect(x, y, 50, 50);
          }
    
          public void sposta() {
             if (x > 550) {
                x = -1;
                y = -1;
             }
             x++;
             y++;
          }
       }
    
       private MioPannello pannello;
       private Timer timer;
    
       public MioRettangolo() {
          Container c = getContentPane();
          c.setLayout( new BorderLayout() );
    
          pannello = new MioPannello();
          c.add(pannello, BorderLayout.CENTER);
    
          setTitle("Pannello spostante");
          setSize(800, 600);
          setDefaultCloseOperation( DO_NOTHING_ON_CLOSE );
          addWindowListener( new WindowAdapter() {
             @Override
             public void windowClosing(WindowEvent we) {
                chiudiApplicazione();
             }
          });
          setLocationRelativeTo( null );
          setVisible( true );
    
          timer = new Timer(200, this);
          timer.start();
       }
    
       private void chiudiApplicazione() {
          timer.stop();
          dispose();
       }
    
       @Override
       public void actionPerformed(ActionEvent ae) {
          pannello.sposta();
          repaint();
       }
    
       public static void main(String[] args) {
          MioRettangolo mr = new MioRettangolo();
       }
    }
    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

  4. #4

    risposta

    grazie mi sei stato utilissimo =)

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.