0

アプリケーションを作成しようとしていますが、時計を追加したいと思います。JPanelとActionListenerを使って時計を作っていますが、タイマーも使いたいです。Swingチュートリアルでは、タイマーをインスタンス化するには、新しいタイマー(numMillis、this(ActionListener))と言いますが、「this」はJPanelアイテムでは機能しないようです。タイマーを適切にインスタンス化するには、タイマーコンストラクターに何を追加しますか?

public ClockPanel() {
    super();

     clockLabel.setText(sdf.format(new Date(System.currentTimeMillis())));
     clockLabel.setFont(new Font("Monospaced", Font.BOLD, 100));
     clockLabel.setOpaque(true);
     clockLabel.setBackground(Color.black);
     clockLabel.setForeground(Color.white);

     timer = new Timer(500, this);
     timer.setRepeats(true);
     timer.start();

     clockLabel.setVisible(true);

    initComponents();
}
public void actionPerformed(ActionEvent e){
     if(e.getSource().equals(timer))
        clockLabel.setText(sdf.format(new Date(System.currentTimeMillis())));
  }
4

2 に答える 2

3

リークthisを避けるためActionListenerに、このに示すように、を実装するネストされたクラスを使用できます。

于 2012-05-31T23:36:52.360 に答える
1

私はあなたの ClockPanel が次のように見えると仮定しています:

public class ClockPanel extends JPanel implements ActionListener {

アクションの実行は正しく機能しているようです。テキストを設定する直前に print を配置すると、それが呼び出されていることがわかります。おそらく、テキストが更新された後に画面を更新していないため、変更が表示されません。

于 2012-05-31T23:35:22.757 に答える