私の質問が馬鹿に聞こえる場合は、私は残念ですが、私はまだJavaの新しいです。他のものの下にmouselistenerを追加するにはどうすればいいですか?
public class Window extends JFrame{
private static final long serialVersionUID = -2139430787087799923L;
private TransparentJPanel mousepanel;
public Window(int width, int height, String title, Game game) {
super(title);
HandlerClass handler = new HandlerClass();
mousepanel = new TransparentJPanel();
mousepanel.addMouseListener(handler);
setPreferredSize(new Dimension(width,height));
setMaximumSize(new Dimension(width,height));
setMinimumSize(new Dimension(width,height));
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
add(game); <-- here I add the game
add(mousepanel); <-- here I add the panel with the mouselistener
game.start();
}
}
TransparentJPanelクラス:私はあなたのコードのこのビットつもりショーだ
private class TransparentJPanel extends JPanel {
private static final long serialVersionUID = 8855609189172945035L;
TransparentJPanel() {
super() ;
this.setOpaque(false) ;
this.setLayout(null) ;
}
}
私は最初のゲームを追加するとき、ゲームが現れ、マウスリスナーが動作しませんが、しかし、最初にjpanelを追加すると、ゲームは表示されませんが、mouselistenerは機能します。
private class HandlerClass implements MouseListener {
public void mouseClicked(MouseEvent event) {
System.out.println(String.format("Clicked at %d,%d", event.getX(), event.getY()));
}
public void mouseEntered(MouseEvent e) {
int x = e.getX();
int y = e.getY();
System.out.println("Mouse Entered frame at X: " + x + " - Y: " + y);
}
public void mouseExited(MouseEvent e) {
int x = e.getX();
int y = e.getY();
System.out.println("Mouse Exited frame at X: " + x + " - Y: " + y);
}
public void mousePressed(MouseEvent e) {
int x = e.getX();
int y = e.getY();
System.out.println("Mouse Pressed frame at X: " + x + " - Y: " + y);
}
public void mouseReleased(MouseEvent e) {
int x = e.getX();
int y = e.getY();
System.out.println("Mouse Released at X: " + x + " - Y: " + y);
}
}
だから、それは私の問題だ: はここに私のhandlerClassのクラスです。 助けてください。
は 'Game'のJPanelクラスですか? –
いいえ。ゲームはゲームループなどのRunnableクラスです。Game.javaの完全なコードは次のとおりです。https://pastebin.com/cpsMSMxY –
'JFrame'はデフォルトで' BorderLayout'を使用しています。利用可能な5つの位置のうちの1つに一度に表示される。パネルを分離する必要がある理由はありますか?ゲームパネルを 'MouseListener'として動作させる方が論理的ではないでしょうか? – MadProgrammer