単純なJavaタイマーを作成していますが、「開始」ボタンをクリックすると時間を表示するJPanelは更新されません。私はJPanelを更新するためにスイングタイマーを使用したが、役に立たなかった。間違ったコンポーネントで使っていますか?ここで は私のコードです...Javaタイマープログラムは表示された時間を更新しません
のJFrame(メインタイマーコンポーネント)
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class theTimer extends JFrame{
//Initialize fields
private TimerPanel tp = new TimerPanel();
private JButton start,stop,reset;
private Dimension buttonSize = new Dimension(80,30);
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Main Method
public static void main(String[] args){
theTimer tT = new theTimer();
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Constructor
public theTimer(){
setLayout(new FlowLayout());
setSize(400,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
add(tp);
addButtonAction();
setButtonSize();
add(start); add(stop); add(reset);
setTitle("Java Study Timer");
setVisible(true);
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Set the size of the timer buttons
private void setButtonSize(){
start.setPreferredSize(buttonSize);
stop.setPreferredSize(buttonSize);
reset.setPreferredSize(buttonSize);
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Gives the buttons functionality
private void addButtonAction(){
start = new JButton("Start");
stop = new JButton("Stop");
reset = new JButton("Reset");
start.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
tp.startTimer();
}
});
stop.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
tp.stopTimer();
}
});
reset.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
tp.resetTimer();
}
});
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
}
ここでのJPanelクラスは(何ディスプレイ時間)
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.*;
public class TimerPanel extends JPanel{
private int min,sec;
private String theTime = min + ":" + sec;
private int width=350, height=300;
private boolean timerStarted=false;
private Timer swingTimer = new Timer(900, new ActionListener(){
public void actionPerformed(ActionEvent event){
if(sec<60){
sec++;
repaint();
}else{
min++;
sec=0;
repaint();
}
}
});
//Constructor
public TimerPanel(){
setPreferredSize(new Dimension(350,300));
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//start the timer
public void startTimer(){
swingTimer.start();
}
//Stop the timer
public void stopTimer(){
swingTimer.stop();
}
//reset the timer
public void resetTimer(){
sec=0; min=0;
repaint();
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Paint Method
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.WHITE);
g.setFont(new Font("Arial", Font.PLAIN, 40));
g.drawString(theTime, width/2-45, height/2);
setBackground(Color.BLACK);
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
}
このコードはどのようにコンパイルされますか?クラスに存在しないように見えるTimerPanelのメソッドupdateTime()を呼び出しています。 –
...........こんにちは?繰り返しますが、そのコードはコンパイルされますか?お答えください。 –
申し訳ありませんが、この回答は投稿されていません。 updateTime()メソッドが残っていて、私の一部でエラーが発生しました。それがなければ、コードがコンパイルされます。 –