[Java] limite destro di un JFrame

paolo-55

Nuovo Utente
5 Feb 2019
5
0
1
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
 
Devi postare il codice o il link alla pagina
 
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:
@paolo-55
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code-gif.6007
o il tag
php-png.6009
per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box-inserisci-2-png-jpg.6008

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
 
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.
 
Se leggi bene non ho neanche accennato alla sezione o detto che ha sbagliato!
 

Discussioni simili