gpt4 book ai didi

java - Java 应用程序的安全桌面模式效果

转载 作者:行者123 更新时间:2023-12-04 20:15:13 24 4
gpt4 key购买 nike

现在有没有人知道如何实现“安全桌面模式”(效果),例如从 Windows Vista/7 UAC 同意 block 获得的效果?

我假设这是一些函数,它会在这里和那里删除像素(并可能使它们变灰),然后最终将其绘制到屏幕上。我想将它应用到我的应用程序中,以防止用户在另一个用户连接到系统之前做任何事情(但这不是重点)。

非常感谢您的建议。

亲切的问候,
A.

编辑:我真的只是在寻找这个

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

输入的延迟我可以做得很好。

感谢大家。

最佳答案

我们使用 JXLayer为了这个确切的目的......

enter image description here enter image description here

这非常有用,因为它可以将用户锁定在给定容器之外,而不像 GlassPane 解决方案那样锁定应用程序。它就像容器的玻璃板;)

我窃取了 here 的基本思想

 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);

}
});
}
}

关于java - Java 应用程序的安全桌面模式效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12982863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com