Плавное исчезновение окна - Java

Узнай цену своей работы

Формулировка задачи:

Зы, от нечего делать решил запилить плавное исчезновение диалоговых окон, а точнение, сделать так, что бы сообщение об ошибке исчезало само через некоторое время, постепенно делаясь прозрачным. получилось Вылажую здесь свою наработку, может кому пригодиться: клас исключения с методом вывода ошибки в исчезающее окно:
    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 = Windows.winUndecoration(new Dimension(600, 150), RGB.getColor(Const.RED_A40000));//создаем окно в центре экрана
                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 секунды*/
            
        }
    }

Решение задачи: «Плавное исчезновение окна»

textual
Листинг программы
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class Main extends JFrame {
    private float f = 1.0f;
 
     public static void main(String[] args) {
        Main m = new Main();
 
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                m.init();
            }
        });
    }
 
 
    private void init(){
        setSize(300, 300);
        setResizable(false);
        setUndecorated (true);
        setExtendedState(JFrame.MAXIMIZED_BOTH);
        setLayout(new SpringLayout());
        add(new exitButton());
        setVisible(true);
    }
 
    class exitButton extends JButton{
        public exitButton(){
            setText("Close");
            setSize(25, 25);
            addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    Exit ex = new Exit();
                    ex.run();
                }
            });
        }
    }
 
    class Exit extends Thread{
        public void run(){
            try {
                while(f > 0f) {
                    setOpacity(f);
                    Thread.sleep(15); // время задержки
                    f -= 0.03f;
                    validate();
                }
                System.exit(0);
            } catch (InterruptedException e) {
                System.out.println("Error: " + e);
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.286 из 5
Похожие ответы