gpt4 book ai didi

java - 实现java鼠标监听器,自定义gui

转载 作者:行者123 更新时间:2023-11-30 07:42:31 26 4
gpt4 key购买 nike

我正在开发一款当前使用 slick2d + lwjgl 的游戏,并且我正在尝试为 gui 组件实现监听器。我想知道如何做到这一点,因为我目前很困惑。我想我可以做这样的事情

GuiComponent 类......

public void addListener(MouseAdapter e){
// Stuck on this part
}

然后将其实现到这样的菜单中

gComponent.addListener(new MouseAdapter(){

@Override
public void mouseClicked(MouseEvent e){
// listener logic

}
}

我不知道如何实际触发 addListener 方法中的 mouseClicked 方法,因为当我像这样运行它时,什么也没有发生,除非我有妄想。不管怎样,任何帮助都会有所帮助,即使你只是将我发送给 javadoc 或类似的东西。谢谢大家,圣诞快乐:)

编辑:

GuiComponent 类

package com.connorbrezinsky.turbulent.gui;

import java.awt.event.MouseAdapter;

import org.newdawn.slick.Color;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;

public class GuiComponent {

int x, y, width, height;

Color color;
Image i;

public GuiComponent(Gui gui, int _x, int _y, int w, int h, Color c) {
gui.components.add(this);
x = _x;
y = _y;
width = w;
height = h;
color = c;
}

public GuiComponent(int _x, int _y, int w, int h, Color c) {
x = _x;
y = _y;
width = w;
height = h;
color = c;
}

public GuiComponent(Gui gui, int _x, int _y, int w, int h) {
gui.components.add(this);
x = _x;
y = _y;
width = w;
height = h;
color = Color.white;
}

public GuiComponent(int _x, int _y, int w, int h) {
x = _x;
y = _y;
width = w;
height = h;
color = Color.white;
}

public void addText(String s){

}

public void addSprite(Image s){
i = s;
}

public void render(Graphics g){
if(i == null) {
g.setColor(color);
g.fillRect(x, y, width, height);
}else{
i.draw(x,y,width,height);
}
}

public void addListener(MouseAdapter e){
// stuck here
}

}

菜单类中的示例

GuiComponent guiTest = new GuiComponent(20, 20, 50, 10);

public void update(GameContainer arg0, StateBasedGame arg1, int arg2) throws SlickException{
guiTest.addListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e){
System.out.println("click");
}
});
}

最佳答案

Slick2D 优惠 several components ,不知道你有没有见过。也许你可以使用AbstractComponent ,通过继承它来执行您期望的操作。它似乎提供了您想要自己实现的 addListeners 方法。它说简化你自己的代码。

然后要添加监听器,您可以使用您的游戏容器。通过gc.getInput().addListener()

使用您的代码,它会类似于:

GuiComponent guiTest = new GuiComponent(20, 20, 50, 10);

public void update(GameContainer arg0, StateBasedGame arg1, int arg2)    throws SlickException{
arg0.getInput().addListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e){
System.out.println("click");
}
});
}

关于java - 实现java鼠标监听器,自定义gui,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34460303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com