簡體   English   中英

鼠標單擊時Java圖像不會移動嗎?

[英]Java image wont move on mouse click?

我沒看過我前一段時間做的這個小游戲的代碼,現在突然間,當我單擊它時,圖像將不會向上移動?

我知道點擊是因為計數器上升而被調用。 但是圖像不會向上移動。 任何幫助表示贊賞。

蝙蝠俠類

package Clicky;

import java.awt.Image;
import javax.swing.ImageIcon;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class Batman
{ 
private String batz = "batbomb.png";

private int x;
private int y;
private Image image;
private boolean visible;

public Batman()
{
ImageIcon ii = new ImageIcon(this.getClass().getResource(batz));
image = ii.getImage();
visible = true;
    x = 145;
    y = 620;
}

public int getX() { return x; }

public int getY() { return y; }

public Image getImage() { return image; }


public boolean isVisible()
{
    return visible;
}

public void setVisible(boolean visible)
{
    this.visible = visible;
}
public void mouseClicked(MouseEvent e)
{
       int button = MouseEvent.BUTTON1;
       if (button == MouseEvent.MOUSE_CLICKED)
       {
          y -= 1;
       }
}
}

一切都畫在這里

package Clicky;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JPanel;
import javax.swing.Timer;
import java.awt.Image;
import javax.swing.ImageIcon;

public class Clicky extends JPanel implements ActionListener
{
private Batman bat;
private Timer timer;
private int clicks = 0;
private boolean visible;

public Clicky() {

    addMouseListener(new TAdapter());
    setFocusable(true);
    setBackground(Color.BLACK);
    setDoubleBuffered(true);

    timer = new Timer(5, this);
    timer.start();

    bat = new Batman();
}
public int getClickCount()
{
    return clicks;
}

@Override
public void paint(Graphics g) {
    super.paint(g);

    Graphics2D g2d = (Graphics2D)g;
    g.setColor(Color.WHITE);
    g2d.drawString("Clicks: " + getClickCount(), 10, 50);
    g2d.drawRect(150, 70, 200, 600);
    g2d.drawImage(bat.getImage(), bat.getX(), bat.getY(), this);
    Toolkit.getDefaultToolkit().sync();
    g.dispose();
}

public void actionPerformed(ActionEvent e) {
    repaint();  
}

private class TAdapter extends MouseAdapter
{
    public void mouseClicked(MouseEvent e)
    {
        e.getClickCount();
         clicks = clicks + 1;  
    }
}

}

您的Batman mouseClicked(MouseEvent e)方法永遠不會被調用(如果我錯了,請告訴我在哪里)。 但是即使這樣做,您的MOUSE_CLICKED == BUTTON1布爾檢查也將始終為假,因為BUTTON1和MOUSE_CLICKED都是常量,並且分別等於1和500,這將確保if塊永遠不會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM