java中的media / fn键

时间:2011-10-04 13:46:29

标签: java swing events key

我目前正在使用java的gstreamer绑定在java中开发媒体应用程序。一切顺利,除了关于键盘的一个小问题,特别是媒体键(例如播放/暂停,后退,下一个)。

我有一些可以作为这些功能的按钮/菜单项使用的动作,并且希望允许使用某些键盘上的键(通常在笔记本电脑上)。但是,我找不到java.awt.event.KeyEvent中的东西来表示这些键。我尝试运行下面的代码片段,它适用于大多数键,包括f1-12,但在'fn'被举行时没有响应'fn'或媒体键。

有谁知道如何让这些键正常工作?

代码:

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

public class Key extends JFrame{

    public Key(){

        JTextField f = new JTextField(50);
        f.addKeyListener(new KeyAdapter(){
            public void keyPressed(KeyEvent e){
                System.out.printf("%s : %d \n", e.getKeyChar(), e.getKeyCode());
            }
        });
        setContentPane(f);
        pack();
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setVisible(true);

    }

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

}

1 个答案:

答案 0 :(得分:4)

如果按下这些键时e.getKeyChar()e.getKeyCode()键没有返回任何内容,我不知道通过标准Java库获取这些事件的任何其他方法,{{ {3}}让代码处于较低级别。

您似乎走在正确的轨道上,在按下某个键时尝试获取密钥代码,这就是当您不知道Java中适当的常量是什么时,您将发现密钥代码的方式。

除此之外,using JNI似乎提供了一些可能性(虽然我不确定这是否仅适用于Microsoft IntelliType设备,或者它是否可以跨平台工作)。例如,当我在Mac上使用Microsoft IntelliType键盘时,媒体键似乎工作得很好。