【问题标题】:I can't use ActionListener and KeyListener in the same time我不能同时使用 ActionListener 和 KeyListener
【发布时间】:2016-09-21 09:48:07
【问题描述】:

我想创建一个按钮所在的简单窗口。 什么时候按他应该会打印出“test”,什么时候按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();
    }

}

【问题讨论】:

    标签: java actionlistener keylistener


    【解决方案1】:

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

       setFocusable(true);
    

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

    【讨论】:

      【解决方案2】:

      添加

      btest.setFocusable(false);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-29
        • 2017-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-30
        • 1970-01-01
        相关资源
        最近更新 更多