저는이 코드를 작업하려고했습니다. 시작 버튼 위로 마우스를 가져 가면 색상이 회색으로 변경되지만, 마우스를 가리킬 때마다처럼 들립니다. 아무 일도 일어나지 않는데 왜 누군가 말해 줄 수 있니? 나는 어떤 에러도 내지 않았고 내 mousemoved 리스너가 컴파일러에 의해 인식되지 않는 것 같았다. 나의 영어에 대해 유감스럽게 생각한다. 나는 아직 완료하지 않은 있지만, 여기에 코드입니다 :mouseMoved 이벤트가 작동하지 않습니다.
이class Contents extends JFrame implements Runnable {
private Image dbi;
private Graphics dbg;
private boolean isStarted, isHovered;
private int x,y,xDir,yDir,bx,by,timer,life,my,mx,mhx,mhy;
private Rectangle startgame = new Rectangle(80,100,150,40);
Contents()
{
super();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
if(isStarted)
setSize(600,600);
else
{
setSize(300,300);
setBackground(Color.BLUE);
}
setLocationRelativeTo(null);
isStarted = false;
isHovered = false;
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
mx = e.getX();
my = e.getY();
if(mx > startgame.x && mx < startgame.x+startgame.width &&
my > startgame.y && my < startgame.y+startgame.height)
{
isStarted = true;
}
}
public void mouseMoved(MouseEvent e)
{
mhx = e.getX();
mhy = e.getY();
if(mhx > startgame.x && mhx < startgame.x+startgame.width &&
mhy > startgame.y && mhy < startgame.y+startgame.height)
isHovered = true;
else
isHovered = false;
}
});
}
public void paint(Graphics g)
{
dbi = createImage(getWidth(), getHeight());
dbg = dbi.getGraphics();
draw(dbg);
g.drawImage(dbi,0,0,this);
repaint();
}
public void draw(Graphics g)
{
if(!isStarted)
{
if(!isHovered)
g.setColor(Color.GRAY);
else
g.setColor(Color.GREEN);
g.fillRect(startgame.x, startgame.y, startgame.width, startgame.height);
g.setFont(new Font("Serif",Font.BOLD,24));
g.setColor(Color.WHITE);
g.drawString("Start game", startgame.x+20, startgame.y+25);
g.drawString(String.format("hoverx: %d hovery: %d",mhx,mhy), 50,200);
}
else
{
}
}
public void run()
{
} }
public class Game {
public static void main(String[] args)
{
Contents c = new Contents();
} }
또한, 일부 게임을 만드는 방법을 배우는 데 도움이되는 사이트를 추천 해 주시겠습니까? 고맙습니다. :) – user3489301
음 ... 버튼에'MouseListener'를 추가하지 말고 프레임이 아닌가요? 그러면'mouseEntered'와'mouseExited'를 사용 하시겠습니까? –
페인팅중인 사용자 정의 버튼 인 경우, 모양이 비슷합니다. 1. mouseMoved 메소드에서'repaint()'를 호출해야합니다. 2.'paint' 메소드에서'repaint'를 호출하지 마십시오. . 또한'paint' 메소드에서'super.paint'를 호출하는 것을 잊고 있습니다. –