-3

私は初心者です。プログラムを実行したとき (つまり、親 jFrame が表示されたとき) にタイマーを開始し、5 秒後にフレームを破棄したいと考えています。そして、タイマーの開始時にダミーのプログレスバーの塗りつぶしを開始し、タイマーが切れるまで完全に塗りつぶしたいと思います。

4

1 に答える 1

5

これがあなたのコードです

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
public class ClosingPanel extends JFrame{
private final Timer every50millis;

public ClosingPanel() {
    setTitle("this panel will self-destruct");
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    final JProgressBar progressBar = new JProgressBar(SwingConstants.HORIZONTAL, 0, 100);
    add(progressBar);
    pack();
    every50millis = new Timer(50, new ActionListener() {
        private int count=0;
        @Override
        public void actionPerformed(ActionEvent e) {
            count++;
            progressBar.setValue(count);
            if (count==100) {
                shutdown();
            }
        }
    });
    every50millis.start();
}

private void shutdown() {
    System.err.println("shutting down");
    every50millis.stop();
    WindowEvent closingEvent = new WindowEvent(ClosingPanel.this, WindowEvent.WINDOW_CLOSING);
    Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(closingEvent);
}

public static void main(String[] args) throws Exception {
    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            ClosingPanel panel = new ClosingPanel();
            panel.setVisible(true);
        }
    });
}

}

于 2013-01-06T12:58:25.673 に答える