- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经设置了一些 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/
已经尝试解决这个问题一天多了,现在抛出白旗。在 UMUC 上这门课,这几乎是一个自学类(class),没有任何帮助,所以我真的很高兴能够在这里提出这个问题。 只是从概念上问这个问题,因为我什至无法理解
我有一个带有属性 pin、发件人姓名、收件人姓名、发件人电话、金额的现金表单,以及另一个带有属性 pin、发件人姓名、收件人姓名、发件人电话、金额、银行名称、帐号的表单帐户。 两种形式都有发送命令 现
我需要做的是一个生产者/消费者程序。我需要做 2 个生产者线程(第一个将继续发送 AcionEvent,间隔 4 秒,第二个将执行相同的操作,间隔 10 秒)。消费者线程需要是带有 JTextArea
我注意到,即使指定条件语句,ActionEvent 仍会在我的 JRadioButtonMenuItem 组中触发: if(!button.isSelected()) //Do stuff
简而言之: 我正在致力于使用 AI 和 GUI 创建纸牌游戏。用户的手显示在游戏界面上,我尚未完成界面,但我打算将牌面图像添加到屏幕上的矩形中。我没有找到 5 种几乎相同的方法,而是找到了一篇类似的文
我看过网上的java教程,它们似乎都关心捕获其他已编写的组件发出的ActionEvents。是否可以编写自己的对象,这些对象有自己的一组标准来触发actionEvents,然后可以被注册为监听器的其他
最近我一直在玩 Java Swing,并尝试创建一个自定义的 Minecraft 服务器启动器。当我按下标有“属性”的按钮时,它应该更改为一个新面板并在某一时刻执行此操作。但是,由于某种原因,我看不到
我已经扩展了 JTextField。我的类(class)有多个 ActionListeners,但我特别需要一个始终首先触发。有没有办法确保特定的 ActionEvent 总是最先出现? 请注意,我确
我正在制作一个程序,可以根据用户输入用文字或字符包装文本。我的所有工作正常,但ActionEvent却给我一个“找不到符号”错误。我敢肯定,我错过了一些小东西,但是我似乎找不到它: import ja
我构建了一个简单的 JavaFX 应用程序,当鼠标进入椭圆时,我不想在椭圆的中心创建一个圆。 这是一些代码: ellipse = new Ellipse(30,30,40,40); ellipse.s
为了测试我对 Java 接口(interface)的理解,我将按钮单击事件处理程序中的匿名类拉到一个单独的类中 - 这已经起作用了 - 但我不明白它为什么起作用。 我原以为必须自己调用类的 handl
我还是 Java 新手,在单击按钮时更改 JLabel 中的图像时遇到问题。我没有收到任何编译器错误,但确实收到了运行时错误。 Line 107: l1.setIcon(icon); “线程“AWT-
我已经在这方面得到了一些帮助,但是现在当我按下按钮时,没有任何反应。我希望当您单击按钮时显示文本。如果是布局问题,我应该使用哪一个? FlowLayout 不适用于此程序,因为它会扭曲按钮。 impo
我试图在按下按钮时启用/禁用标签,并且我想在事件期间而不是事件之后执行此操作。正如您在下面看到的,我尝试启用/禁用两个标签:lblKeyboard 和 lblGamepad。 它们最终在“Remote
我有两个类,一个包含两个组合框的 gui 类和一个监听两个组合框的监听器类。该软件是关于披萨的,组合框是选择披萨的类型和数量,我将发布相关代码。 (gui class) private Listene
找到解决方案 决定在 actionListener 之外创建一个名为 chairPrice 的方法更容易,该方法可以通过名为 getItemPrice() 的方法递增。这已用于计算元素和作品总价的10
我的代码属于 LWUIT 应用程序,但存在 LWUIT 和 java swing 之间常见问题。 我有一个表格,在它的最后一个单元格上设置了一个按钮作为组件 我的问题只是为什么当我按下该按钮时没有发生
我是 Java 新手,正在开发一个看起来像标准介绍项目的项目,该项目创建多个 (<10) 个计时器,每个计时器都可以独立启动和停止。启动后,它们会每秒从初始启动时间开始倒计时一次,并显示更新等等。 我
我正在开发一个相当大(且有缺陷)的 JSF 应用程序,用户经常提示我们难以重现的问题。 是否可以拦截所有 ActionEvents 的创建,以便我可以记录它们的创建? 如果没有,是否有一种自动方式(J
首先,如果标题很简短,我深表歉意,我已经考虑过,但无法为我的问题提供足够短的摘要。 我有一个由 JButton 组成的 JPanel 类。 我有我的主 Swing 应用程序类,其中包含 Swing 组
我是一名优秀的程序员,十分优秀!