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