Я использовал этот код для реализации своего рода 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);
и добавляя пользовательские значки выхода, фоны и т. д.