想象一下两种常见情况的组合:在 VK_ESCAPE 上关闭的 JDialog(或 JFrame)(设置为根窗格上的键绑定)和应该在 ESC 上关闭的内部 JPopupMenu。问题是:如果弹出窗口可见,按 Esc 总是关闭对话框 - 事件。显然,弹出窗口甚至没有收到键事件,因此它不能被弹出窗口使用。有没有办法让它正常工作,以便在第一个 ESC 事件上关闭弹出窗口,在第二个关闭对话框?顺便说一句:它确实与 JComboBox 一起使用,默认情况下,当按下转义键时它会关闭。
我正在做这个任务,制作一个解决数独的程序.我有一个带有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的大小,以便它是正方形,我不能强制每个文本框只有一个整数.
我错过了一些非常明显的东西吗
我在自定义NSView中使用onKeyDown来检测keydown事件,当我输入普通键时它很好用,比如"a,b,c",但是当我按下ESC时它没有调用onkeydown函数,我想退出我的应用程序时用户按ESC键.
怎么做?
嗨希望有人可以告诉我我的关键事件我做错了什么.
我使用卡片布局来浏览我的两个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) 如何在jQuery中触发退格键事件?
以下示例无效:
var e = jQuery.Event("backspace", { keyCode: 8 });
$("#myarea").trigger( e );
Run Code Online (Sandbox Code Playgroud) 当您尝试使用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中一般性地获取密钥事件?这里的目标是不使用任何重载的类(例如new KeyListener(){...}).
我试图看看我能做多么小的简单游戏,并且使用重载类相对于普通代码占用相当多的空间,因为它们在打包到jar时需要自己的整个类文件.
我明白了
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活动级别的正确方法是什么?这些警告好吗?我应该做相应的变化onKeyUp和onKeyDown自己的看法?
我正在开发一个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按钮?
谢谢
我首先尝试使用下面的代码返回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.当我不使用返回功能时,如何禁用后退按钮单击事件.
先感谢您.