2

私は自分のプロジェクトでフォーカスせずにキーイベント クラス オブジェクトを使用せずにキーストロークを取得するための Java プログラムを作成したいと考えていました..そうする方法はありますか..??

私はこれを試しましたが、私の要件を満たしていません!!

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.text.Keymap;

public class key1 {

    private static void showUI() {
        JFrame jFrame = new JFrame("");
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container container = jFrame.getContentPane();
        JTextField txt = new JTextField();
        container.add(txt, BorderLayout.NORTH);
        ActionListener actListener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                System.out.println(event.getActionCommand() + " selected");
            }
        };
        JPanel jPane = new JPanel();
        JButton defaultButton = new JButton("Hit Enter");
        defaultButton.addActionListener(actListener);
        jPane.add(defaultButton);
        JButton otherButton = new JButton("Onother Button");
        otherButton.addActionListener(actListener);
        jPane.add(otherButton);
        container.add(jPane, BorderLayout.SOUTH);
        Keymap map = txt.getKeymap();
        KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false);
        map.removeKeyStrokeBinding(stroke);
        jFrame.getRootPane().setDefaultButton(defaultButton);
        jFrame.setSize(350, 250);
        jFrame.setVisible(true);
    }

    public static void main(String args[]) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                showUI();
            }
        });
    }
}
4

1 に答える 1