Есть ли класс Java по умолчанию для всплывающего окна 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, который сделает это для меня? а если нет, то как я могу позволить JDialog slide подняться с панели задач (или за пределы экрана)? или каким-то образом медленно становиться видимым, как всплывающее окно ToolTip из системного трея. Спасибо.

РЕДАКТИРОВАТЬ Причина, по которой я хочу использовать JDialog или Frame, заключается в том, что я хочу иметь возможность полностью скрыть всплывающее окно, используя setUndecorated(true); и добавляя пользовательские значки выхода, фоны и т. д.


person David Kroukamp    schedule 18.06.2012    source источник


Ответы (2)


Вы имеете в виду примеры здесь: http://docs.oracle.com/javase/tutorial/uiswing/misc/systemtray.html ?

person Morfic    schedule 18.06.2012
comment
Я знаю, как сделать системный трей, однако я хочу иметь возможность настраивать его так, как если бы это была рамка, то есть добавлять кнопку, метки и т. д., однако мне нужна возможность медленного «всплывающего окна» всплывающих подсказок. предоставляется системным треем. В основном я хочу рамку, потому что я смогу полностью ее обшить. т. е. без оформления и добавить метки с изображениями для значков выхода и т. д. - person David Kroukamp; 19.06.2012
comment
Извините, ничего, что я знаю до сих пор. Однако парню здесь удалось добиться хорошего полупрозрачного эффекта, и если вы прокрутите вниз, вы можете увидеть некоторые другие предложенные 2-3 библиотеки: stackoverflow.com/questions/3240415/ - person Morfic; 19.06.2012
comment
Спасибо, это действительно помогло, я думаю, мне придется сделать это вручную :( лол - person David Kroukamp; 19.06.2012
comment
Нет проблем, если вы действительно заинтересованы в этом, вы можете подумать о том, чтобы поделиться своим результатом через результаты через библиотеку с открытым исходным кодом. Я думаю, что другие будут очень рады получить в свои руки что-то подобное. - person Morfic; 19.06.2012
comment
Хе-хе, может быть, я так и сделаю. Спасибо за помощь! - person David Kroukamp; 19.06.2012

Во-первых, вы можете сделать так, чтобы ваша рамка всегда была сверху, это обеспечит ее постоянную видимость. Затем вы можете расположить рамку за пределами нижней части экрана и программно сдвинуть ее вверх. Это должно быть довольно гладко даже на старой машине XP. Для этого не существует стандартного Java API, но вы можете легко сделать это самостоятельно. Другой вариант вместо скольжения — сделать окно полностью прозрачным и затемнить его. Этот API был добавлен в последние (последние 2 года) обновления Java 6, поэтому он должен быть доступен везде.

person Josh Marinacci    schedule 20.06.2012