线程无限循环的最佳替代品

时间:2016-01-02 15:05:11

标签: java swing coding-style

我是Java的GUI开发新手,所以我遇到了以下问题:

在我的Graphics2D绘制的自定义组件中,我正在制作一个闪烁的动画。为此,我创建了一个Java Thread,它正在更改变量并定期调用repaint()方法。

我知道创建一个无限循环被认为是糟糕的编程风格所以你知道一个更好的替代方法甚至更好的方法来使用Graphics2D进行简单的动画而不需要定制的线程吗?

代码

循环

new Thread(new Runnable() {
        @Override
        public void run() {
            while (true) {
                try {
                    blinkState = true;
                    FeldPanel.this.repaint();
                    Thread.sleep(1000);
                    blinkState = false;
                    FeldPanel.this.repaint();
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }).start();

摘自paintComponent

if (highlightedField != null && blinkState) {
        g.setColor(Color.YELLOW);
        g.fillRect(highlightedField.getX() * 33, highlightedField.getY() * 33, 33, 33);
    }

0 个答案:

没有答案