我正在嘗試創建一個繪製一個圓圈(定義爲對象)到屏幕的小程序,然後可以使用鼠標在屏幕上拖動此圓圈。到目前爲止,當鼠標被按下時,對象被繪製並且可以被拖動,但是我想要的是在applet被啓動時繪製對象,然後允許用戶點擊對象並拖動它。任何幫助或線索將不勝感激。這裏是代碼:使用MouseListener拖動對象Java applet
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class sheepDog extends Applet implements ActionListener, MouseListener, MouseMotionListener
{
manAndDog dog;
int xposR;
int yposR;
public void init()
{
addMouseListener(this);
addMouseMotionListener(this);
}
public void paint(Graphics g)
{
dog.display(g);
}
public void actionPerformed(ActionEvent ev)
{}
public void mousePressed(MouseEvent e)
{
}
public void mouseReleased(MouseEvent e)
{
}
public void mouseEntered(MouseEvent e)
{}
public void mouseExited(MouseEvent e)
{}
public void mouseMoved(MouseEvent e)
{
}
public void mouseClicked(MouseEvent e)
{}
public void mouseDragged(MouseEvent e)
{
dog = new manAndDog(xposR, yposR);
xposR = e.getX();
yposR = e.getY();
repaint();
}
}
class manAndDog implements MouseListener, MouseMotionListener
{
int xpos;
int ypos;
int circleWidth = 30;
int circleHeight = 30;
Boolean mouseClick;
public manAndDog(int x, int y)
{
xpos = x;
ypos = y;
mouseClick = true;
if (!mouseClick){
xpos = 50;
ypos = 50;
}
}
public void display(Graphics g)
{
g.setColor(Color.blue);
g.fillOval(xpos, ypos, circleWidth, circleHeight);
}
public void mousePressed(MouseEvent e)
{
mouseClick = true;
}
public void mouseReleased(MouseEvent e)
{
}
public void mouseEntered(MouseEvent e)
{}
public void mouseExited(MouseEvent e)
{}
public void mouseMoved(MouseEvent e)
{}
public void mouseClicked(MouseEvent e)
{}
public void mouseDragged(MouseEvent e)
{
if (mouseClick){
xpos = e.getX();
ypos = e.getY();
}
}
}
感謝
1)請學會共同[Java命名約定(http://java.sun.com/docs /books/jls/second_edition/html/names.doc.html#73307)(特別是用於名稱的情況),用於類,方法和屬性名稱並一致使用它。 2)如果老師沒有指定一個框架的'小程序'代碼。如果他們確實指定了一個小程序,告訴他們他們不適合教導,並且應該爲自己感到羞恥。 –
public void mouseDragged(MouseEvent e) dog = new manAndDog(xposR,yposR);'更好的設計是隻創建和屏幕上出現的manAndDog一樣多的實例(例如1)獲取/設置x,y位置的方法。 –
@AndrewThompson +1羞辱教師:) – MadProgrammer