2
我創建了從JFrame繼承的通知窗口,但它們在Windows任務欄中顯示爲帶有新圖標。當出現通知時(例如在Skype中,何時發送新消息)突出顯示主應用程序圖標並且不在任務欄中顯示通知窗口的新圖標時,是否可以突出顯示主應用程序圖標?JFrame彈出無任務欄圖標
這裏是彈出代碼:
public class NotificationWindow extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
static private int m_count = 0;
public NotificationWindow(String text)
{
super("NotificationWindow");
setLayout(new GridBagLayout());
setSize(300, 70);
setLocationRelativeTo(null);
setOpacity(0.77f);
setUndecorated(true);
setResizable(false);
add(new JLabel(text));
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt)
{
--m_count;
}
});
++m_count;
}
static public int GetWindowCount()
{
return m_count;
}
static public void ShowNotificationWindow(final String text)
{
// Determine if the GraphicsDevice supports translucency.
GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment
.getLocalGraphicsEnvironment();
final GraphicsDevice graphicsDevice = graphicsEnvironment
.getDefaultScreenDevice();
// If translucent windows aren't supported, exit.
if (!graphicsDevice.isWindowTranslucencySupported(TRANSLUCENT))
{
System.err.println("Translucency is not supported");
System.exit(0);
}
JFrame.setDefaultLookAndFeelDecorated(true);
// Create the GUI on the event-dispatching thread
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run()
{
NotificationWindow notificationWindow = new NotificationWindow(
text);
Insets scnMax = Toolkit.getDefaultToolkit().getScreenInsets(
notificationWindow.getGraphicsConfiguration());
int taskBarSize = scnMax.bottom;
Rectangle rect = graphicsDevice.getDefaultConfiguration()
.getBounds();
int x = (int) rect.getMaxX() - notificationWindow.getWidth();
int y = (int) rect.getMaxY() - notificationWindow.getHeight()
- taskBarSize - ((m_count - 1) % 7)
* notificationWindow.getHeight();
notificationWindow.setLocation(x, y);
notificationWindow.setVisible(true);
}
});
}
}
我只需要突出顯示任務欄圖標,而不是系統托盤鏈接。 – IKM2007 2013-04-27 16:05:22
確保您指定框架作爲對話框的父級。 – camickr 2013-04-27 16:10:53