[Java] limite destro di un JFrame

Discussione in 'Java' iniziata da paolo-55, 5 Febbraio 2019.

  1. paolo-55

    paolo-55 Nuovo Utente

    Registrato:
    5 Febbraio 2019
    Messaggi:
    3
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    facendo muovere una figura in un JFrame, per simulare il movimento di una pallina, trovo che il limite destro sembra spostato indietro di 20 pixel.
    la stessa cosa non accade per il limite sinistro.

    per rilevare il limite della finestra uso frame.getWidth() e calcolo il momento del rimbalzo decrementando questo valore della dimensione della pallina.

    qualcuno mi sa spiegare la ragione?

    grazie in anticipo.
    Paolo
     
  2. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.481
    Mi Piace Ricevuti:
    265
    Punteggio:
    83
    Sesso:
    Maschio
    Devi postare il codice o il link alla pagina
     
  3. paolo-55

    paolo-55 Nuovo Utente

    Registrato:
    5 Febbraio 2019
    Messaggi:
    3
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Questo è il codice utilizzato.
    ho provato a compensare(riga 18), ma non capisco da cosa dipenda.
    Codice:
        import java.awt.Color;
        import java.awt.Container;
        import java.awt.Graphics;
        import java.awt.GridLayout;
        import javax.swing.JFrame;
        import javax.swing.JPanel;
        public class figuraInMovimento{
            public static Fr f;
            public static int q;
            public static void main(String[] args){
                f=new Fr();
                Container c=f.getContentPane();    //recupera il container dalla gerarchia
                Pan p=new Pan();        //crera un pannello
                c.add(p);
                f.setLayout(new GridLayout());
                f.setVisible(true);
                while(true){
                    q=(int)f.getWidth()-20;//QUI CONSIDERO LA DIFFERENZA DI 20 PIXEL
                    if(p.x>=q-50) //50 è la dimensione del diametro del cerchio
                        p.dir=p.dir*(-1);
                    if(p.x<=0)
                        p.dir=p.dir*(-1);
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                           e.printStackTrace();
                    }
                    f.repaint();
                }
            }
          
        }
        class Fr extends JFrame{
            public Fr(){
                super("figura in movimento");
                setBounds(300,300,300,300); 
                setBackground(Color.blue);
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            }
        }
        class Pan extends JPanel{
            int x=1;
            int dir=1;
            public void paintComponent(Graphics g){//metodo che disegna
                int q=figuraInMovimento.q;
                g.setColor(Color.red);
                g.drawString("dir= "+dir+", x= "+x+"finestra= "+q , 10, 10);
                g.drawString("margine sinistro a "+(x+50) , 10, 30);
                g.setColor(Color.blue);
                g.fillOval(x+dir, 100, 50, 50);//SFERA CHE SI MUOVE, CANCELLAZIONE DELLA POSIZIONE CORRENTRE
                g.setColor(Color.red);
                g.fillOval(x, 100, 50, 50);//RISCRITTURA IN NUOVA POSIZIONE
                x+=dir;
            }
        }
     
    Ultima modifica di un moderatore: 6 Febbraio 2019
  4. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.481
    Mi Piace Ricevuti:
    265
    Punteggio:
    83
    Sesso:
    Maschio
    @paolo-55
    Da regolamento del forum, come tutti noi sei tenuto ad usare il tag [​IMG] o il tag [​IMG] per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti
    [​IMG]
    Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
    Grazie
    Per questa volta te lo sistemo io ma mi raccomando per il futuro
     
  5. paolo-55

    paolo-55 Nuovo Utente

    Registrato:
    5 Febbraio 2019
    Messaggi:
    3
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    mi scuso per la disattenzione e cercherò di non ripetere l'errore. Non sono molto abituato a frequentare i forum.
    Ma sembra, da quello che scrivi, che io abbia sbagliato anche la sezione che invece mi sembra corretta, mentre invece credo che sia quella giusta.
     
  6. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.481
    Mi Piace Ricevuti:
    265
    Punteggio:
    83
    Sesso:
    Maschio
    Se leggi bene non ho neanche accennato alla sezione o detto che ha sbagliato!
     
Sto caricando...

Condividi questa Pagina