是否有Popup JDialog的默认java类?

时间:2012-06-18 23:36:29

标签: java swing popupwindow jdialog

我一直在使用此代码来实现Popup JDialog种类,就像您的防病毒扫描系统或更新自身时所看到的那样:

import java.awt.*;
import javax.swing.JDialog;
import javax.swing.JLabel;

public class PopupDialog extends JDialog {

    public PopupDialog() throws HeadlessException {
        createUI();
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                PopupDialog popupDialog = new PopupDialog();
                popupDialog.setVisible(true);
            }
        });
    }

    private void createUI() {
        setTitle("Popup Dialog");
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

        addComponentsToFrame();

        //This call will give screens viable area, which takes into account the taskbar, which could be at the bottom, top,left or right of the screen.
        Rectangle maxBounds = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();

        //get screen size
        int sWidth = maxBounds.width, sHeight = maxBounds.height;

        setSize(275, 225);//set frame size
        Dimension appDim = getSize();
        //get app size
        int aWidth = appDim.width, aHeight = appDim.height;

        //set location like a tooltip would be except its a custom dialog like an AV
        setLocation(sWidth - aWidth, (sHeight - aHeight));
    }

    private void addComponentsToFrame() {
        JLabel label = new JLabel("Popup Dialog");
        getContentPane().add(label, BorderLayout.CENTER);
    }
}

但我的问题是:java中是否有任何类或包可以为我执行此操作?如果不是,我将如何从任务栏(或屏幕外)向slide提升JDialog?或以某种方式变得可见,就像来自系统托盘的ToolTip Popup一样。感谢。

编辑我想使用JDialog或Frame的原因是因为我希望能够使用setUndecorated(true);完全设置外观弹出窗口并添加自定义退出图标,背景等

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

首先,您可以使您的框架始终位于顶部,这将确保始终可见。接下来,您可以将框架放在屏幕底部并以编程方式向上滑动。即使在较旧的XP机器上,这也应该相当顺畅。没有标准的Java API可以做到这一点,但你可以很容易地自己做。另一个选择而不是滑动是使窗口完全透明并淡入其中。这个API是在最近(最近2年)Java 6更新中添加的,所以它应该随处可用。