0

私は現在、学位を取得するために Capstone プロジェクト用の POS システムを構築しています。私はすでにプロジェクトの仕様をはるかに超えており (私のポートフォリオでは、コマンド ウィンドウ インターフェイスに求められるものよりも見栄えがよくなります)、もう 1 つの機能を追加したいと考えています。

POS システムについて考えるとき、主要な "Windows" 機能をユーザーから隠し、エンド ユーザーだけが自分の仕事を行えるようにするアプリケーションを思い浮かべます。これを行うには、アプリケーションの実行中にタスクバーを完全に削除したいと考えています。現在、JFrame を全画面表示にすることができます。これにより、Windows タスクバーが非表示になります。

ただし、ユーザーが Alt + Tab キーまたはキーボードの "Windows" キーを押すと、タスクバーが再び表示されます。これは削除したい機能です。

これが私のSSCCEです:

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class TestWindow extends JFrame implements ActionListener {

    private static final long serialVersionUID = 1L;
    private JPanel contentPane;

    public void buildGUI() {
        setUndecorated(true);
        setResizable(false);
        Toolkit tk = Toolkit.getDefaultToolkit();
        int xSize = ((int) tk.getScreenSize().getWidth());
        int ySize = ((int) tk.getScreenSize().getHeight());
        setSize(xSize, ySize);
        setAlwaysOnTop(true);
        contentPane = new JPanel();
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);
        setVisible(true);

        JPanel panel = new JPanel();
        contentPane.add(panel, BorderLayout.CENTER);
        JButton btn = new JButton("Exit");
        btn.addActionListener(this);
        panel.add(btn);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    new TestWindow().buildGUI();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("Exit")) {
            System.exit(0);
        }
    }
}

ALT+TABまたはWindowsキーが押されているかどうかを確認するには、keyListenerを追加するだけでよいでしょうか? または、これを処理するより良い方法はありますか?

4

1 に答える 1

0

SetWindowsHookEx を使用して、低レベルのキーボード フック (WH_KEYBOARD_LL を参照) を設定する必要があります。

于 2012-05-05T08:49:08.243 に答える