gpt4 book ai didi

java - 我不能同时使用 ActionListener 和 KeyListener

转载 作者:行者123 更新时间:2023-12-05 07:49:20 26 4
gpt4 key购买 nike

我想创建一个只有一个按钮的简单窗口。当我按他时应该打印出“测试”,当我按 F5 时应该打印“F5”。我不知道我做的不好我为我还在学习的英语道歉

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;

@SuppressWarnings("serial")
public class Okienko extends JFrame implements ActionListener , KeyListener
{
static Okienko frame;

JButton bTest;

public Okienko()
{
setLayout(null);
frame = this;
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setTitle("test");
frame.setLocation(150, 150);
frame.setSize(200, 400);


bTest = new JButton("Test");
bTest.setBounds(20, 50, 120, 20);
frame.add(bTest);

bTest.addActionListener(this);

frame.addKeyListener(this);
//frame.setFocusable(false);
//frame.requestFocus();
requestFocusInWindow();
frame.setVisible(true);
}

@Override
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();

if (source == bTest)
{
System.out.println("Test");
}
}

@Override
public void keyPressed(KeyEvent e)
{
int id = e.getKeyCode();

if (id == KeyEvent.VK_ESCAPE)
{
this.dispose();
}

if (id == KeyEvent.VK_F5)
{
System.out.println("F5");
}

}

@Override
public void keyReleased(KeyEvent e)
{

}

@Override
public void keyTyped(KeyEvent e)
{

}
public static void main(String[] args)
{
new Okienko();
}

}

最佳答案

例如,您可以通过调用组件的 setFocusable(true) 方法为组件启用键盘焦点。在构造函数中添加:

   setFocusable(true);

更多信息在这里:https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

关于java - 我不能同时使用 ActionListener 和 KeyListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37409192/

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