感謝您檢查這個問題。我想我只是在挫折中抓住了我的頭骨。 所以我得到的是一個包含'JPanel'的'JFrame'。 'JPanel'包含一個小彩色正方形,當我點擊窗口時應該移動X個像素。這個廣場我動畫是留下一個痕跡,任何人都可以解決原因?
好吧,基本上所有的行爲都應該如此,只有一個例外。當藍色方塊向右移動時,它會在其後面留下其他方塊的痕跡。然而,當我重新調整窗戶的大小時,它不應該離開小路,路徑消失。
Catalyst.java
package Prototype;
import java.awt.*;
public class Catalyst {
public static void main(String[] args){
World theWorldInstance = new World("Prototype", 100,100, 600,100); /*title,xpos,ypos,width,height*/
}
}
World.java
package Prototype;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class World extends JFrame {
Level mainPanel;
public World(String title, int x, int y, int width, int height) {
setTitle(title);
setBounds(x,y,width,height);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBackground(new Color(0x00000000));
initLevel();
}
public void initLevel(){
mainPanel = new Level();
Container visibleArea = getContentPane();
visibleArea.add(mainPanel);
setVisible(true);
add(mainPanel);
}
}
Level.java
package Prototype;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Level extends JPanel implements MouseListener, ActionListener {
Square x;
public Level() {
System.out.println("This is working correctly[JPANEL Cons]");
addMouseListener(this);
x = new Square();
}
public void paintComponent(Graphics g){
x.draw(g);
}
public void actionPerformed(ActionEvent e){
}
public void mousePressed(MouseEvent e){
requestFocus();
x.move();
repaint();
System.out.println("Focus Acquired");
}
public void mouseClicked(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
}
Square.java
package Prototype;
import java.awt.*;
public class Square {
private Point position;
private int size;
private final int displacement;
public Square(){
position = new Point(10,10);
size = 20;
displacement = 5;
}
public void draw(Graphics g){
g.setColor(Color.blue);
g.fillRect(position.x-(size/2), position.y-(size/2), size,size);
g.setColor(Color.black);
g.drawRect(position.x-(size/2), position.y-(size/2), size,size);
}
public void move() {
position.x += displacement;
}
}
這些都是我的文件。我希望我已經正確表達了所有內容並提供了所需的全部內容。每當我在過去做過類似的事情時,從未發生過。我認爲我錯過了一些小事,或者我做了一些愚蠢的事情。如果你能幫助我,請提前致謝!
Ahha,這很有趣,不知道這件事,或者你可以說永遠不會嘗試它:-) +1雖然 –
美麗。簡單而優雅。謝謝。 – yoonsi
不能信任它,我在Swing教程的某個地方瞭解到了它 - 多年來爲我節省了一堆麻煩。 – Ewald