2012-04-29 1 views
0

В настоящее время я создаю систему POS для моего проекта Capstone, чтобы завершить свою степень. Я уже прошел WAY выше и выше спецификаций для проекта (будет выглядеть лучше в моем портфолио, чем вызванный интерфейс Command Window), и хотел бы добавить одну дополнительную функцию.Могу ли я навсегда удалить доступ к панели задач при максимальном использовании JFrame?

Когда я думаю о системе 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); 
     } 
    } 
} 

Так что мне просто нужно добавить KeyListener, чтобы проверить, если ALT + TAB или клавишу Windows, нажата? Или есть лучший способ справиться с этим?

+0

Вы хотите программу Java для переопределения окна ключа в окнах? Вы также хотите, чтобы он перекрывал ctrl-alt-delete? – esej

+0

Я не думаю, что вы сможете это сделать, поскольку окна перехватывают команду alt + tab (IIRC), и она никогда не доходит до приложения –

+0

@esej CTRL + ALT + DEL все равно будет в порядке. Это будет работать в среде Windows, поэтому CTRL + ATL + DEL должен быть доступен в случае сбоя. –

ответ

0

Это требует, чтобы установить до уровня клавиатуры крюка низкого (см WH_KEYBOARD_LL) с помощью SetWindowsHookEx

 Смежные вопросы

  • Нет связанных вопросов^_^