标签: keyevent

如果底层窗口在 ESC 上关闭,如何为 JPopupMenu 启用 ESC-Close?

想象一下两种常见情况的组合:在 VK_ESCAPE 上关闭的 JDialog(或 JFrame)(设置为根窗格上的键绑定)和应该在 ESC 上关闭的内部 JPopupMenu。问题是:如果弹出窗口可见,按 Esc 总是关闭对话框 - 事件。显然,弹出窗口甚至没有收到键事件,因此它不能被弹出窗口使用。有没有办法让它正常工作,以便在第一个 ESC 事件上关闭弹出窗口,在第二个关闭对话框?顺便说一句:它确实与 JComboBox 一起使用,默认情况下,当按下转义键时它会关闭。

java keyevent jdialog jpopupmenu

2
推荐指数
1
解决办法
1876
查看次数

JFormattedTextField未正确清除

我正在做这个任务,制作一个解决数独的程序.我有一个带有SudokuTextBox网格的面板,扩展了JFormattedTextField.我有一个MaskFormatter,因此每个文本框只接受一个整数.然后在我的面板中,当密钥被释放时,我有这个代码.

 public void keyReleased(KeyEvent e) {
  SudokuTextBox tb = (SudokuTextBox) e.getSource();
  int row = tb.getRow();
  int col = tb.getCol();
  int value = toInteger(tb.getText());
  //System.out.println(value);
  if(sudoku.isValid(row, col, value)) {
   sudoku.set(row, col, value);
  }
  else {
   sudoku.set(row, col, 0);
   tb.setText(null);
  }
  tb.setCaretPosition(0);
  sudoku.print();
 }
Run Code Online (Sandbox Code Playgroud)

问题是,如果我在文本框中放一个有效的值,然后我回去(由数独的规则),输入无效值的文本框被清除.但是当我向前选项卡时,前一个有效值显示在文本框中.我sudokumatrix包含所有已inputed不明确的价值像它应该这样,只有在相应的文本框中的数字.

当我将"SudokuTextBox扩展JFormattedTextField"更改为"SudokuTextBox extends JTextField"时,它更加令人困惑,它就像一个魅力.但我不能设置JTextField的大小,以便它是正方形,我不能强制每个文本框只有一个整数.

我错过了一些非常明显的东西吗

java keyevent sudoku jtextfield jformattedtextfield

2
推荐指数
1
解决办法
3636
查看次数

在Cocoa应用程序中无法检测ESC键?

我在自定义NSView中使用onKeyDown来检测keydown事件,当我输入普通键时它很好用,比如"a,b,c",但是当我按下ESC时它没有调用onkeydown函数,我想退出我的应用程序时用户按ESC键.

怎么做?

macos cocoa keyevent nsview

2
推荐指数
1
解决办法
1335
查看次数

按下按钮后,Java Key Event将不会执行

嗨希望有人可以告诉我我的关键事件我做错了什么.

我使用卡片布局来浏览我的两个JPanels atm.为此,我使用了Action Events和Key Events.当按下按钮时,动作事件将在JPanel之间切换,而当按下按键时,按键事件将隐藏按钮.所有关键事件都很好,它做我想要的(在其中一个面板上调用一个方法来设置放在其中的按钮的边界eq:button.setBounds(-1,-1,150,40);但是当我按下任何按钮,按键事件不响应,尽管我按下的按钮上没有任何事件.下面是我的代码,为简单起见,我删除了面板的非相关部分,就像它们要做的那样.

在此先感谢,如果我需要提供更多线索或更多地编辑代码,请告诉我,我会尽力使代码更清晰.

public class PanelContainer extends JPanel implements ActionListener, KeyListener{
    GamePanel game = new GamePanel();
    MainMenuPanel mainMenu = new MainMenuPanel();
    CardLayout cards = new CardLayout();
    public PanelContainer(){
        setLayout(cards);
        this.setFocusable(true);
        this.addKeyListener(this);
        mainMenu.newGameButton.addActionListener(this);
        add(mainMenu, "Card1");
        add(game, "Card2");
    }
    @Override
    public void actionPerformed(ActionEvent aevt){
        cards.show(this, "Card2");
        game.action();
    }
    @Override
    public void keyTyped(KeyEvent kevt){

    }
    @Override
    public void keyPressed(KeyEvent kevt){

    }
    @Override
    public void keyReleased(KeyEvent kevt){
        if(kevt.getKeyCode() == KeyEvent.VK_ESCAPE || kevt.getKeyChar() == 'O' ||    kevt.getKeyChar() == 'o'){
            game.shw(); //shw() is …
Run Code Online (Sandbox Code Playgroud)

java swing focus keyevent jbutton

2
推荐指数
1
解决办法
2323
查看次数

在jQuery中触发退格键

如何在jQuery中触发退格键事件?

以下示例无效:

var e = jQuery.Event("backspace", { keyCode: 8 });
$("#myarea").trigger( e );
Run Code Online (Sandbox Code Playgroud)

jquery triggers keyevent backspace

2
推荐指数
1
解决办法
7824
查看次数

当按下引号键时,java.awt.Robot.keyPress抛出IllegalArgumentException

当您尝试使用Robot.keyPress键入"(双引号)时,它会抛出java.lang.IllegalArgumentException:无效的键代码.

我该如何解决或解决这个问题?

如果它有帮助,我目前在Windows上.

测试代码:

import java.awt.Robot;
import java.awt.event.KeyEvent;

public class Test {
    public static void main(String[] args) throws Exception {
        Robot robot = new Robot();
        try {
            robot.keyPress(KeyEvent.VK_QUOTEDBL);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

例外:

java.lang.IllegalArgumentException: Invalid key code
    at sun.awt.windows.WRobotPeer.keyPress(Native Method)
    at java.awt.Robot.keyPress(Robot.java:358)
Run Code Online (Sandbox Code Playgroud)

java keyevent awtrobot

2
推荐指数
1
解决办法
3062
查看次数

Java:在没有KeyListener或使用任何其他自定义类的情况下抓取键事件

这是一个奇怪的问题,但值得一提的是:有没有办法在不使用密钥监听器,密钥绑定,密钥调度程序等的情况下在Java中一般性地获取密钥事件?这里的目标是不使用任何重载的类(例如new KeyListener(){...}).

我试图看看我能做多么小的简单游戏,并且使用重载类相对于普通代码占用相当多的空间,因为它们在打包到jar时需要自己的整个类文件.

java compression class keyevent

2
推荐指数
1
解决办法
547
查看次数

如何正确覆盖Android中的dispatchKeyEvent

我明白了

D/InputEventConsistencyVerifier( 2144): KeyEvent: ACTION_UP but key was not down.`
D/InputEventConsistencyVerifier( 2144): in com.android.internal.policy.impl.PhoneWindow$DecorView@41689658
Run Code Online (Sandbox Code Playgroud)

当我尝试在我的活动中执行此操作时,警告全部:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    if ((/*some boolean checks*/) && (event.getAction() == KeyEvent.ACTION_DOWN)) {
            /*some custom functions*/
            return true;
        }
    }
    return super.dispatchKeyEvent(event);
}
Run Code Online (Sandbox Code Playgroud)

覆盖dispatchKeyEvent活动级别的正确方法是什么?这些警告好吗?我应该做相应的变化onKeyUponKeyDown自己的看法?

android keyevent

2
推荐指数
1
解决办法
2万
查看次数

Android-应用程序在后台时拦截硬件KeyPress(PTT按钮)

我正在开发一个Android应用程序,该应用程序可以拦截紧迫的硬件按钮并进行REST调用以减轻压力。我必须拦截的按钮是一键通(PTT)按钮,而不是常规按钮,例如电源按钮或音量按钮。

当应用程序在前台运行时,我使用方法onKeyDown(int keyCode,KeyEvent事件)。PTT按钮作为标识符具有数字27,然后在该方法内部编写了以下代码行:

if(keyCode == 27){//我按下了PTT按钮}

所有这些完美地工作。

但是现在我在后台发送该应用程序(带有moveTaskToBack(true);函数),当我按下PTT按钮时,我将拦截它

我知道BroadcastReceiver,IntentFilter和Service,但是,它们允许您拦截有限的intent动作(例如intent.action.SCREEN_OFF或其他常规动作),其中无法找到PTT按钮的压力

当应用程序处于后台时,有什么方法可以拦截PTT按钮?

谢谢

android keyevent background-application

2
推荐指数
1
解决办法
2299
查看次数

如何使用后退按钮返回CrossWalk的XWalkView,或禁用它?

我首先尝试使用下面的代码返回webview.但是对于低渲染能力,我用XWalkView取代了WebView.

public boolean onKeyDown(int keyCode, KeyEvent event) {
    WebView mWebView = (WebView) findViewById(R.id.webview);
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_BACK:

                if (mWebView.canGoBack()) {
                    mWebView.goBack();
                } else {
                    finish();
                    if (MainActivity.mTencent.isSessionValid()) {
                        MainActivity.logout();
                    }
                }
                return true;
        }

    }
    return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)

当更改为XWalkView时,我只能在XWalkView中找到这个.但我找不到一个使用它的例子.当我没有实现后退按钮时,双击后退按钮后应用程序将退出.

我的问题是:1.如何使用返回XWalkView,如果某些代码可能更有帮助.2.当我不使用返回功能时,如何禁用后退按钮单击事件.

先感谢您.

android keyevent back-button crosswalk xwalkview

2
推荐指数
1
解决办法
2090
查看次数