Эффект Secure Desktop Mode для Java-приложения

Кто-нибудь сейчас как добиться "Режим Secure-Desktop » (эффект), например, один из блоков согласия Windows Vista / 7 UAC?

Я предполагаю, что это какая-то функция, которая удаляет пиксели здесь и там (и, возможно, их затенение), а затем, наконец, выводит это на экран ... Я бы хотела применить его к своему приложению, чтобы пользователь ничего не делал до следующего пользователь подключается к системе (но это не главное)

Буду очень признателен за совет.

С уважением

РЕДАКТИРОВАТЬ: я действительно только искал это

        graphicsFX.setColor(new Color(0, 0, 0, 0.8f));  
        graphicsFX.fillRect(0, 0, 800, 600);  

отсрочку ввода я могу сделать довольно хорошо ...

Спасибо за все....

 j_mcnally20 окт. 2012 г., 00:14
Я могу'Технически твой вопрос - своего рода дубликат. Просто спросил по-другому. Я'Я предлагаю удалить ваш вопрос и просто убрать дубликат.
 MadProgrammer20 окт. 2012 г., 00:25
Мы используемJXLayer добиться того же эффекта (и отключить контейнер)
 j_mcnally19 окт. 2012 г., 23:48
Попробуйте стеклянный самолетstackoverflow.com/questions/3886264/...
 Aiden Strydom20 окт. 2012 г., 00:11
@ j-mcnally: пожалуйста, оставьте свой комментарий как ответ, чтобы я мог принять - ссылка с этой ссылки дала мне идею ... Слава

Ответы на вопрос(2)

Вместо того, чтобы заново изобретать колесо, попробуйте использоватьsetEnabled(false) на компоненте, чтобы отключить его, и когда соединение с системой установленоsetEnabled(true) чтобы снова включить компонент.

Увидетьэтот пример для большего, который показывает неактивный / неактивный:JButton

 David Kroukamp20 окт. 2012 г., 00:13
@AidenStrydom +1 рад помочь :)
 Aiden Strydom20 окт. 2012 г., 00:12
Это не совсем то, что я имел в виду - но мне очень нравится эффект, настолько, что я собираюсь использовать этот метод, чтобы отказаться от ввода
Решение Вопроса

Мы используемJXLayer для этой конкретной цели ...

Это действительно полезно, так как блокирует пользователя из данного контейнера без блокировки приложения, какGlassPane решение делает. Это'как стеклянная панель для контейнеров;)

Я украл основную идею дляВот

 public class JXLayerTest {

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

      public JXLayerTest() {
           EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                     try {
                          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                     } catch (ClassNotFoundException ex) {
                     } catch (InstantiationException ex) {
                     } catch (IllegalAccessException ex) {
                     } catch (UnsupportedLookAndFeelException ex) {
                     }

                     final LockableUI ui = new LockableUI();
                     JPanel panel = new JPanel(new GridBagLayout());
                     buildUI(panel);

                     // This stolen directly from the JXLayer lockable blog                         
                     JXLayer layer = new JXLayer(panel, ui);

                     // Java2D grayScale BufferedImageOp
                     ColorConvertOp grayScale = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
                     // wrap it with the jxlayer's BufferedImageOpEffect 
                     BufferedImageOpEffect effect = new BufferedImageOpEffect(grayScale);
                     // set it as the locked effect        
                     ui.setLockedEffects(effect);
                     ui.setLocked(false);

                     JFrame frame = new JFrame();
                     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                     frame.setLayout(new BorderLayout());
                     frame.add(layer);

                     JPanel panelButtons = new JPanel(new GridBagLayout());

                     final JButton lock = new JButton("Lock");
                     lock.addActionListener(new ActionListener() {
                          @Override
                          public void actionPerformed(ActionEvent e) {
                               boolean locked = !ui.isLocked();
                               ui.setLocked(locked);
                               lock.setText(locked ? "Unlock" : "Lock");

                          }
                     });

                     panelButtons.add(lock);
                     frame.add(panelButtons, BorderLayout.SOUTH);

                     frame.pack();
                     frame.setLocationRelativeTo(null);
                     frame.setVisible(true);
                }

                protected void buildUI(JPanel panel) {
                     GridBagConstraints gbc = new GridBagConstraints();
                     gbc.gridx = 0;
                     gbc.gridy = 0;

                     JLabel label = new JLabel();
                     try {
                          BufferedImage image = ImageIO.read(new File("megatokyo.png"));
                          label.setIcon(new ImageIcon(image));
                     } catch (IOException ex) {
                          label.setText("Nothing to see here");
                     }

                     panel.add(label, gbc);

                     JButton button = new JButton("Clickl me");
                     button.addActionListener(new ActionListener() {
                          @Override
                          public void actionPerformed(ActionEvent e) {
                               JOptionPane.showMessageDialog(null, "Clicked");
                          }
                     });

                     gbc.gridy++;
                     panel.add(button, gbc);

                }
           });
      }
 }
 MadProgrammer25 окт. 2012 г., 01:41
@ Макс Спасибо: D ...
 tenorsax25 окт. 2012 г., 01:14
+1 отличный пример! :)
 David Kroukamp20 окт. 2012 г., 09:41
+1 любящий пример и JXLayer :)
 MadProgrammer20 окт. 2012 г., 10:10
@DavidKroukamp Когда я только начинаю настраивать его, он всегда в моей голове, оборачивая панель в слой и слой: P - Как только я его настрою, он 'с удивительным

Ваш ответ на вопрос