为什么mousePress不执行任何操作?

baesuzy070:

我是Java的新手,我正在尝试制作自动答题器。它是这样的。当您单击按钮时,应用程序开始单击(在按s时也有效),并且在您按“ w”时,应用程序停止单击。我目前的主要问题是我无法使应用程序单击:V。(我还有一个用于启动的“ main.java”)这是我的代码vvvvvvv

    package copy;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.KeyAdapter;





import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Game 
implements ActionListener{

    JFrame frame;
    JLabel label;
    JButton button;
    Action ON;
    Action OFF;
    private static Robot bot;
    public static boolean status = false;
    
    Game(){
        ON = new statusON();
        OFF = new statusOFF();
        
        frame = new JFrame("Bullet Chicken Clicker");
        label = new JLabel();
        button = new JButton("turn on?");
        frame.setSize(400, 400);
        frame.setLocation(600, 150);
        frame.setVisible(true); 
        frame.setAlwaysOnTop(true);
        frame.add(label);
        frame.add(button); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        label.getInputMap().put(KeyStroke.getKeyStroke('w'), "OFF");
        label.getActionMap().put("OFF", OFF);
        
        

        
        label.getInputMap().put(KeyStroke.getKeyStroke('w'), "upAction");
        label.getActionMap().put("upAction", ON);
        label.getInputMap().put(KeyStroke.getKeyStroke('s'), "downAction");
        label.getActionMap().put("downAction", OFF);
        
        button.setPreferredSize(new Dimension(40, 40));
        button.setOpaque(true);
        button.setForeground(Color.BLACK);   
        button.setBounds(125, 150, 150, 30);
        button.setVisible(true);
        button.addActionListener(this);
        button.setFocusable(false);
    }
    
    private void clicky() {
        while (status == true);
            bot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            bot.delay(300);
            bot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
            bot.delay(300);
    }
    public static void robot() {
        try {
            bot = new Robot();
        } catch (AWTException e2) {
            e2.printStackTrace();
        }
    }
    
    public class statusON extends AbstractAction{

        @Override
        public void actionPerformed(ActionEvent e) {
            status = true;
            System.out.print(status);
        }       
    }
    public class statusOFF extends AbstractAction{

        @Override
        public void actionPerformed(ActionEvent e) {
            status = false;
            System.out.print(status);
        }       
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        status = true;
        System.out.print(status);
        
    }
    
}
camickr:

我目前的主要问题是我无法使应用程序单击:V。

嗯,您没有将键绑定分配给“ V”键。您两次定义“ W”的绑定。

话虽如此,您的代码仍然不正确,将来会给您带来问题:

  1. 您将两个组件添加到BorderLayout.CENTER
  2. 在使框架可见之前,应将组件添加到框架
  3. 您使用了错误的InputMap

在上一个问题中给您的教程中,有3个InputMap。默认的InputMap仅在组件具有焦点时才起作用。在您不正确的示例中,标签确实具有焦点。但是,如果添加更多组件,则可能无法保持焦点。

在游戏的情况下,以确保你的游戏响应的最简单的方法KeyStroke是绑定KeyStrokeInputMapJRootPane帧。然后,框架上的哪个组件具有焦点都没有关系,将调用该动作。

因此,您的代码应类似于:

JRootPane rootPane = frame.getRootPane();
InputMap im = rootPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);

im.put(KeyStroke.getKeyStroke('v'), "OFF");
rootPane.getActionMap().put("OFF", OFF);
im.put(KeyStroke.getKeyStroke('w'), "upAction");
rootPane.getActionMap().put("upAction", ON);
im.put(KeyStroke.getKeyStroke('s'), "downAction");
rootPane.getActionMap().put("downAction", OFF);

不需要JLabel。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么ListDensityPlot不执行任何操作?

pandas.Series.interpolate()不执行任何操作。为什么?

为什么更新OLEDB查询不执行任何操作?

为什么Haskell的“不执行任何操作”功能id会占用大量内存?

为什么action =“ localhost”在提交时导致表单不执行任何操作?

INSERT INTO .db不执行任何操作。为什么不起作用?

为什么我的 If 和 Else 语句不执行任何操作?(c++)

如果 Redux 操作实际上不执行任何操作,为什么它们被称为操作(IE 调度)

为什么作业条目会在Spark UI for RDD中显示而仅进行转换而不执行任何操作

如果琐碎的默认构造函数不执行任何操作,为什么不能使用malloc创建琐碎的可构造对象?

为什么Windows Defragmenter在具有23%可用空间的磁盘上几乎不执行任何操作?

只需添加不执行任何操作都可能导致编译错误的析构函数(在std :: move附近),为什么?

为什么当第二个箭头指示器出现时EA不执行任何操作?

为什么我的浏览器扩展程序在页面加载时不执行任何操作(工具箱中除外)?

MouseListener不执行任何操作

UILongPressGestureRecognizer不执行任何操作

FileSaver不执行任何操作

为什么我的程序可以编译但不执行任何操作?

为什么业力不执行任何测试?

为什么执行该命令时不返回任何结果?

为什么fetch_sub不执行释放操作?

为什么不执行错误之前的解析器操作?

在GDB中单步执行缓冲区溢出时,为什么CC INT3指令不执行任何操作?

为什么我在 R Shiny 中的 observeEvent() 调用在其中包含反应式表达式后不执行任何操作?

npm运行“脚本”不执行任何操作

NPM运行*不执行任何操作

ListView onItemClickListener不执行任何操作

Twitter logInWithCompletion或logInWithViewController不执行任何操作

npm更新不执行任何操作