0

フルスクリーンのJWindowを作成しました。矢印キーを押した場合に何かを実行する、単純なKeyListenerを追加したいのですが、
なぜ機能しないのかわかりません。すべてのコンポーネントにキーリスナーを追加しました。しかし、それでも、
何が問題なのかを誰が知っているのかは機能していませんか?

4

2 に答える 2

3

デフォルトでは、ウィンドウの作成時に所有者としてJFrameを指定しない限り、JWindowはキーイベントを受信しません。次のコードはこれを示しています。

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

public class WindowTest
{
    public static void main(String[] args)
    {

        JFrame frame = new JFrame();
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//      frame.setLocation(-200, 0); // uncomment this line to hide the dummy frame
        frame.setVisible( true );

        JWindow window = new JWindow(); // this doesn't work
//      JWindow window = new JWindow(frame); // this works

        window.getContentPane().add( new JTextField(10), BorderLayout.NORTH );
        window.getContentPane().add( new JButton("Button") );
        String[] items = { "Select Item", "Color", "Shape", "Fruit" };
        JComboBox mainComboBox = new JComboBox( items );
        window.getContentPane().add( mainComboBox, BorderLayout.SOUTH );

        window.setBounds(50, 50, 200, 200);
        window.setVisible(true);
        window.getRootPane().setBorder(new javax.swing.border.MatteBorder(4, 4, 4, 4, Color.BLUE));
     }
}

より簡単な解決策は、装飾されていないJFrameを使用することです。

JFrame frame = new JFrame();
frame.setUndecorated(true);

矢印キーを押すと何かをする簡単なKeyListenerを追加したい

また、これにはKeyListenerを使用しないでください。キーバインディングを使用する必要があります。

于 2011-05-26T15:07:21.427 に答える
1

おそらく、関連するコンポーネントをフォーカス可能に設定するだけの問題です。例えば

myContentPane.setFocusable(true);
于 2011-05-26T11:23:49.697 に答える