Нужно не ниже 8 JDK, проверено на семерке, ругается матом. Класс исключения, которое выводит сообщение об ошибки в ГУЙ, и спустя некоторое время, медленно закрывает окно с сообщением
private static class ProcentInputException extends Exception {
private String s;
private JFrame wn;
private Timer t;
private float f = 1.0f;
public ProcentInputException(double d) {
s = "ProcentInputException>> " + d + " більше ніж 100%";
}
@Override
public String toString(){
return s;
}
public void outError(){
//если нужно дикорированое окно снимите комент со следующей строки
//JFrame.setDefaultLookAndFeelDecorated(true);
wn = winX_YUndecoration(new Dimension(600, 150), Color.red);//создаем окно в центре экрана
JPanel p = Panels.RGBPanel(RGB.getColor(Const.RED_A40000));
JLabel l = Labels.RGBBold(Const.BLUE, 16, s);
p.add(l);
wn.getContentPane().add(p);//Добавляем компоненты
TimerTask tt = new TimerTask() {
@Override
public void run() {
f -= 0.01f;//уменьшаем непрозрачность
if(f > 0){
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
wn.setOpacity(f);//задаем непрозрачность
wn.validate();//обновляем окно
}
});
}
else{
wn.setVisible(false);//закрываем окно
t.cancel();//останавливаем таймер
}
}
};
t = new Timer();
t.schedule(tt, 45, 45);/*Запускаем таймер, расчиттывая время исходя из того,
сколько должно прожить наше окно, и множим ето время на 10. В даном примере окно
существует 4,5 секунды*/
}
public static JFrame winX_YUndecoration(Dimension dim, Color c) {
int x = dim.width;
int y = dim.height;
JFrame win = new JFrame();
win.setSize(x, y);
win.setLocation(0, 0);
win.getContentPane().setBackground(c);
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.setUndecorated(true);
win.setVisible(true);
return win;
}
}
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ