Java 如何为自定义游标创建单独的类
我试图把一个游戏作为一个个人项目,并希望自定义光标有两种状态;正常并单击。我如何为它创建一个单独的类,并在创建窗口的类中使用它 这只是一个学习的经验,并有机会创建一个游戏自定义光标。我尝试将代码放入Window类中,而不是为鼠标创建单独的类。这是可行的,但它很混乱,我想学习如何通过分离类来清理它 如果你不知道我是否在其中一个代码中有东西,就假设我没有。我对编程相当陌生,知道的不多Java 如何为自定义游标创建单独的类,java,mouseevent,mouse,mouselistener,custom-cursor,Java,Mouseevent,Mouse,Mouselistener,Custom Cursor,我试图把一个游戏作为一个个人项目,并希望自定义光标有两种状态;正常并单击。我如何为它创建一个单独的类,并在创建窗口的类中使用它 这只是一个学习的经验,并有机会创建一个游戏自定义光标。我尝试将代码放入Window类中,而不是为鼠标创建单独的类。这是可行的,但它很混乱,我想学习如何通过分离类来清理它 如果你不知道我是否在其中一个代码中有东西,就假设我没有。我对编程相当陌生,知道的不多 //This is the code that worked public class Window extends
//This is the code that worked
public class Window extends JFrame {
Cursor normal = Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefaultToolkit().getImage("Cursor.gif"), new Point(0, 0), "Gauntlet");
Cursor clicked = Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefaultToolkit().getImage("Cursor_Clicked.gif"), new Point(0, 0), "Gauntlet_Clicked");
class myMouseListener implements MouseListener {
@Override
public void mouseEntered(MouseEvent arg0) {
setCursor(normal);
}
public void mouseExited(MouseEvent arg0) {
}
@Override
public void mouseClicked(MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
setCursor(clicked);
}
@Override
public void mouseReleased(MouseEvent arg0) {
setCursor(normal);
}
}
myMouseListener mml = new myMouseListener();
public Window() {
super.setSize(1200, 1000);
super.addMouseListener(mml);
super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
super.setVisible(true);
}
public static void main(String[] args) {
new Window();
}
}
对于当前的代码,我希望每当我按下鼠标左键时,就会有我的自定义光标发生变化,就像在功能代码中一样。然而,鼠标根本没有改变。就好像我甚至没有写任何代码一样
c=normal
或c=clicked
时,我相信这会更改鼠标类中c
的指针,但不会更新超类的光标,因为该光标使用单独的变量保存,该变量仍然指向未初始化的c
。要解决此问题,只需调用setCursor(正常)
或setCursor(单击)
,如下所示:c=normal
或c=clicked
时,我相信这会更改鼠标类中c
的指针,但不会更新超类的光标,因为该光标使用单独的变量保存,该变量仍然指向未初始化的c
。要解决此问题,只需调用setCursor(正常)
或setCursor(单击)
,如下所示:我以前让它工作过,但现在不行了。在我的窗口类中如何使用鼠标类?@HaydenSmith我根本没有更改你的窗口类。我使用了与注释
//相同的类,这是我修改过的鼠标顶部的当前代码,代码运行正常。我以前让它运行正常,但现在不行了。在我的窗口类中如何使用鼠标类?@HaydenSmith我根本没有更改你的窗口类。我使用了与注释//完全相同的类,这是我修改过的鼠标顶部的当前代码
,代码运行正常。
//This is the current code
public class Window extends JFrame {
public Window() {
super.setSize(1200, 1000);
super.add(new Mouse());
super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
super.setVisible(true);
}
public static void main(String[] args) {
new Window();
}
}
//This is the new class for the cursor that I'm having trouble with
public class Mouse extends JFrame {
public Mouse() {
super.setCursor(c);
}
Cursor normal = Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefaultToolkit().getImage("Cursor.gif"), new Point(0, 0), "Gauntlet");
Cursor clicked = Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefaultToolkit().getImage("Cursor_Clicked.gif"), new Point(0, 0), "Gauntlet_Clicked");
Cursor c;
class myMouseListener implements MouseListener {
@Override
public void mouseEntered(MouseEvent arg0) {
c = normal;
}
public void mouseExited(MouseEvent arg0) {
}
@Override
public void mouseClicked(MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
c = clicked;
}
@Override
public void mouseReleased(MouseEvent arg0) {
c = normal;
}
}
}
public class Mouse extends JPanel {
public Mouse() {
this.addMouseListener(new myMouseListener());
}
Cursor normal = Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefaultToolkit().getImage("Cursor.gif"), new Point(0, 0), "Gauntlet");
Cursor clicked = Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefaultToolkit().getImage("Cursor_Clicked.gif"), new Point(0, 0), "Gauntlet_Clicked");
class myMouseListener implements MouseListener {
@Override
public void mouseEntered(MouseEvent arg0) {
setCursor(normal);
}
public void mouseExited(MouseEvent arg0) {
}
@Override
public void mouseClicked(MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
setCursor(clicked);
}
@Override
public void mouseReleased(MouseEvent arg0) {
setCursor(normal);
}
}
}