gpt4 book ai didi

java - 如何正确格式化 ActionEvent 以便 JButton 正常工作

转载 作者:行者123 更新时间:2023-11-30 05:42:06 24 4
gpt4 key购买 nike

我已经设置了一些 ActionListener,但是只有“Takeoff”有效。其他按钮单击后不起作用。单击它们时,没有任何反应。

我尝试创建一个新的 ButtonHandler,但没有成功。

ButtonListener l = new ButtonListener();

JButton takeoff = new JButton("Takeoff");
takeoff.addActionListener(new ButtonHandler());
takeoff.addActionListener();
grid[0][2].add(takeoff);

JButton land = new JButton("Land");
land.addActionListener(new ButtonHandler());
grid[1][2].add(land);

JButton forward = new JButton("Forward");
forward.addMouseListener(new MouseHandler(l));
forward.addActionListener();
grid[2][1].add(forward);

JButton left = new JButton("Left");
left.addMouseListener(new MouseHandler());
left.addActionListener(new ButtonHandler());
left.addActionListener();
grid[3][0].add(left);


takeoff.addActionListener(l);
land.addActionListener(l);
forward.addActionListener(l);
backward.addActionListener();
left.addActionListener(l);
right.addActionListener(l);
turnLeft.addActionListener(l);
turnRight.addActionListener(l);
up.addActionListener(l);
down.addActionListener(l);
stop.addActionListener(l);

我想做的是将无人机朝正确的方向移动,而不是让它静止不动。

我不确定这部分是否有帮助,但我有我的 ButtonHandler 实现 ActionListener 的位置。

private class ButtonHandler implements ActionListener
{

public void actionPerformed(ActionEvent e)
{

String button = e.getActionCommand();

if (button.equals("Takeoff")) {
RobotModel.takeoff();
}
else if (button.equals("Land")) {
RobotModel.land();
}

else if(button.equals("Left")) {
RobotModel.left();
}

}
}

最佳答案

您可以使用 actionCommand 通过反射调用方法,例如

private void init() {
JButton left = new JButton("Go left");
// This
left.setActionCommand("left");
left.addActionListener(new MethodCallActionHandler());
// OR that
left.addActionListener(new MethodCallActionHandler("left"));
}

private void left() {
// go left...
}

private class MethodCallActionHandler implements ActionListener {

private String methodName;

private MethodCallActionHandler() {
super();
}

private MethodCallActionHandler(String methodName) {
this.methodName = methodName;
}

public void actionPerformed(ActionEvent e)
{
String button = methodName != null ? methodName : e.getActionCommand();
SurroundingClass.this.getClass().getMethod(button, new Class[] {}).invoke(SurroundingClass.this);
}
}

您还可以将操作命令作为字符串传递给 MethodCallActionHandler。

关于java - 如何正确格式化 ActionEvent 以便 JButton 正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55457336/

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