Java Swing Animation заморозить - PullRequest
       10

Java Swing Animation заморозить

0 голосов
/ 10 октября 2018

Я хочу написать Java-программу, которая показывает анимацию сжимающегося прямоугольника после нажатия кнопки.Но после того, как я нажал кнопку, она просто на некоторое время зависла (думаю, пока цикл for не закончился), а затем мой прямоугольник исчез без анимации сжатия.Как решить эту проблему?
Заранее спасибо!

public class Graphic07 {
        int x=1;
        int y=1;
        boolean state = false;
        JFrame frame = new JFrame();
        JButton button = new JButton("Test");
        DrawBoard draw = new DrawBoard();

        public static void main(String[] args) {
            Graphic07 go = new Graphic07();
            go.initialize();
        }

        void initialize(){
            button.addActionListener(new ButtonListener());
            frame.getContentPane().add(BorderLayout.CENTER,draw);
            frame.getContentPane().add(BorderLayout.SOUTH, button);
            frame.setSize(500,500);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
        void paint(){
                for (int i=0;i<124;i++){
                    x++;
                    y++;
                    draw.repaint();
                    try {
                        Thread.sleep(50);
                    } 
                    catch (Exception ex) {
                    }
                }
        }
        class ButtonListener implements ActionListener{
            @Override
            public void actionPerformed(ActionEvent e) {
                button.setText("Pressed");
                paint();
            }
        }
        class DrawBoard extends JPanel{
            @Override
            public void paintComponent(Graphics g) {
                g.setColor(Color.black);
                g.fillRect(0,0,this.getWidth(),this.getHeight());
                g.setColor(Color.CYAN);
                g.fillRect(x,y,500-x*2,250-y*2);
            }
        }
    }
...