2015-03-25 3 views
1

в другой программе У меня была такая же проблема, поэтому я дал вам то, что я пытаюсь сделать с меньшим классом, чтобы вы могли легче читать код. В принципе, я пытаюсь изменить положение X, но, похоже, он просто становится больше.Прямоугольник становится больше вместо изменения позиции

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Rectangle; 
import java.awt.RenderingHints; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.RepaintManager; 


public class test extends JPanel{ 

    public int x = 200; 
    public int y = 620; 

    Rectangle cube = new Rectangle(x, y, 80, 80); 

    int cubex = cube.x; 


    public void paint(Graphics g){ 

     Graphics2D g2d = (Graphics2D) g; 
     g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
       RenderingHints.VALUE_ANTIALIAS_ON); 

     g2d.fill(cube); 

    } 

    public void moveCube(){ 
     cube.setLocation(cubex -= 1, y); 
     cube.setSize(80, 80); 
     repaint(); 
    } 

    public static void main(String[] args) throws InterruptedException { 

     test t = new test(); 

     JFrame frame = new JFrame(); 

     frame.add(t); 

     frame.setSize(700, 1000); 
     frame.setVisible(true); 
     frame.setTitle("The Cube"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setResizable(true); 
     frame.setLocationRelativeTo(null); 

     frame.setBackground(new Color(240, 84, 84)); 

     while(true){ 

      t.moveCube(); 
      Thread.sleep(10); 
     } 
    } 

} 

Большое спасибо за вашу помощь :)

ответ

1

Я попробовал ваш программка. Вы правильно перемещаете объект, но вы не очищаете свой ранее окрашенный прямоугольник; таким образом, кажется, он расширяется.

+0

Не могли бы вы объяснить, как это сделать? Я действительно новичок в этом :) –

Смежные вопросы