I am having trouble getting my timer class working with my scoreboard frame and application. Any constructive help is appreciated.

public class ScoreboardTimer extends Thread
{
private int counter; // the number of seconds remaining on the timer
private boolean isRunning; // toggle variable that controls whether the counter is decremented or not
private JTextField timerDisplay; // reference to the GUI object displaying the timer
// getters and setters for the variables
public boolean toggleRunning()
{
// toggles the value of isRunning variable; called from click handler on/off button on frame
}
public void run()
{
while (counter > 0)
{
// delay one second with sleep() method
// if clock is running, decrement counter and update display
}
}
}
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.GridBagLayout;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import java.awt.Color;
import javax.swing.JTextField;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.*;
import java.text.*;
public class ScoreboardFrame extends JFrame
{
  JMenuItem menuFileExit = new JMenuItem();
  JMenu menuFile = new JMenu();
  JMenuBar menuBar1 = new JMenuBar();
  BorderLayout borderLayout1 = new BorderLayout();
  JPanel panelScoreboard = new JPanel();
  GridBagLayout gridBagLayout1 = new GridBagLayout();
  JTextField txtHomeScore = new JTextField();
  JLabel jLabel1 = new JLabel();
  JLabel jLabel2 = new JLabel();
  JTextField txtGuests = new JTextField();
  JTextField txtTime = new JTextField();
  JPanel panelButtons = new JPanel();
  JButton btnTimeControl = new JButton();
  JButton btnHomeAdd = new JButton();
  JButton btnHomeSub = new JButton();
  JButton btnGuestsAdd = new JButton();
  JButton btnGuestsSub = new JButton();
  DecimalFormat df = new DecimalFormat("00");
  int homeScore = 0;
  int guestsScore = 0;
  public ScoreboardFrame()
  {
    try
    {
      jbInit();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
  }
  private void jbInit() throws Exception
  {
    this.setJMenuBar(menuBar1);
    this.getContentPane().setLayout(borderLayout1);
    this.setSize(new Dimension(534, 300));
    this.setTitle("Basketball Scoreboard");
    menuFile.setText("File");
    panelScoreboard.setBackground(new Color(227, 82, 227));
    panelScoreboard.setLayout(gridBagLayout1);
    txtHomeScore.setText("00");
    txtHomeScore.setPreferredSize(new Dimension(100, 75));
    txtHomeScore.setFont(new Font("SansSerif", 1, 60));
    txtHomeScore.setForeground(Color.red);
    txtHomeScore.setEditable(false);
    jLabel1.setText("Home");
    jLabel1.setFont(new Font("Dialog", 1, 20));
    jLabel1.setForeground(Color.white);
    jLabel2.setText("Guests");
    jLabel2.setForeground(Color.white);
    jLabel2.setFont(new Font("Dialog", 1, 20));
    txtGuests.setText("00");
    txtGuests.setCaretColor(Color.red);
    txtGuests.setForeground(Color.red);
    txtGuests.setEditable(false);
    txtGuests.setPreferredSize(new Dimension(100, 75));
    txtGuests.setFont(new Font("SansSerif", 1, 60));
    txtTime.setText("10:00");
    txtTime.setFont(new Font("SansSerif", 1, 60));
    txtTime.setForeground(Color.red);
    txtTime.setEditable(false);
    btnTimeControl.setText("Start/Stop");
    btnTimeControl.setForeground(Color.red);
    btnTimeControl.addActionListener(new ActionListener()
      {
        public void actionPerformed(ActionEvent e)
        {
          btnTimeControl_actionPerformed(e);
        }
      });
    btnHomeAdd.setText("Home +");
    btnHomeAdd.addActionListener(new ActionListener()
      {
        public void actionPerformed(ActionEvent e)
        {
          btnHomeAdd_actionPerformed(e);
        }
      });
    btnHomeSub.setText("Home -");
    btnHomeSub.addActionListener(new ActionListener()
      {
        public void actionPerformed(ActionEvent e)
        {
          btnHomeSub_actionPerformed(e);
        }
      });
    btnGuestsAdd.setText("Guests +");
    btnGuestsAdd.addActionListener(new ActionListener()
      {
        public void actionPerformed(ActionEvent e)
        {
          btnGuestsAdd_actionPerformed(e);
        }
      });
    btnGuestsSub.setText("Guests -");
    btnGuestsSub.addActionListener(new ActionListener()
      {
        public void actionPerformed(ActionEvent e)
        {
          btnGuestsSub_actionPerformed(e);
        }
      });
    menuFileExit.setText("Exit");
    menuFileExit.addActionListener(new ActionListener()
      {
        public void actionPerformed(ActionEvent ae)
        {
          fileExit_ActionPerformed(ae);
        }
      });
    menuFile.add(menuFileExit);
    menuBar1.add(menuFile);
    panelScoreboard.add(txtHomeScore, new GridBagConstraints(0, 1, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(4, 4, 4, 4), 1, 1));
    panelScoreboard.add(jLabel1, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(4, 4, 4, 4), 1, 1));
    panelScoreboard.add(jLabel2, new GridBagConstraints(4, 0, 1, 1, 1.0, 1.0, GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(4, 4, 4, 4), 1, 1));
    panelScoreboard.add(txtGuests, new GridBagConstraints(4, 1, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(4, 4, 4, 4), 1, 1));
    panelScoreboard.add(txtTime, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    this.getContentPane().add(panelScoreboard, BorderLayout.CENTER);
    panelButtons.add(btnHomeAdd, null);
    panelButtons.add(btnHomeSub, null);
    panelButtons.add(btnTimeControl, null);
    panelButtons.add(btnGuestsAdd, null);
    panelButtons.add(btnGuestsSub, null);
    this.getContentPane().add(panelButtons, BorderLayout.SOUTH);
  }
  void fileExit_ActionPerformed(ActionEvent e)
  {
    System.exit(0);
  }
  void btnTimeControl_actionPerformed(ActionEvent e)
  {
  }
  void btnHomeAdd_actionPerformed(ActionEvent e)
  {
    homeScore++;
    txtHomeScore.setText(df.format(homeScore));
  }
  void btnHomeSub_actionPerformed(ActionEvent e)
  {
    homeScore--;
    txtHomeScore.setText(df.format(homeScore));
  }
  void btnGuestsAdd_actionPerformed(ActionEvent e)
  {
    guestsScore++;
    txtGuests.setText(df.format(guestsScore));
  }
  void btnGuestsSub_actionPerformed(ActionEvent e)
  {
    guestsScore--;
    txtGuests.setText(df.format(guestsScore));
  }
}
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.UIManager;
import java.awt.Dimension;
import java.awt.Toolkit;
public class ScoreboardApp 
{
  public ScoreboardApp()
  {
    Frame frame = new ScoreboardFrame();
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if (frameSize.height > screenSize.height)
    {
      frameSize.height = screenSize.height;
    }
    if (frameSize.width > screenSize.width)
    {
      frameSize.width = screenSize.width;
    }
    frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
    frame.addWindowListener(new WindowAdapter()
      {
        public void windowClosing(WindowEvent e)
        {
          System.exit(0);
        }
      });
    frame.setVisible(true);
  }
  public static void main(String[] args)
  {
    try
    {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
    new ScoreboardApp();
  }
}

Recommended Answers

All 3 Replies

hope this will get you going

import java.util.Timer;
import java.util.TimerTask;

/**
 * Work of peter_budo :o)
 * Simple demo that uses java.util.Timer to schedule 
 * the specified task for repeated fixed-delay execution, 
 * beginning after the specified delay
 */

public class CountDown 
{
    Timer timer;
    int runTime = 0;
    int setTime = 600;				// time set up for 10min

    public CountDown(int seconds) 
    {
        timer = new Timer();
        timer.schedule(new CountDownTask(), seconds*1000, 1000);
	}

    class CountDownTask extends TimerTask 
    {
        public void run() 
        {        
        	int convert;
        	runTime++;
        	
            if( runTime < setTime)
            {
            	convert = setTime - runTime;
            	System.out.println( (int) convert/60 + ":" + convert%60);
            }
            else
            {
            	timer.cancel(); //Terminate the timer thread
            }            
        }
    }

    public static void main(String args[]) 
    {
        new CountDown(1);
        System.out.print("Task scheduled.\n10:00\n");
    }
}

for mor info on schedule Timer go to Sun Java

What you have to do is just sort displaying zeros befor time smaller then 10 in minutes or seconds

I may be missing something but this does not get my timer in the application to work. Can you please expand upon your answer for the ignorance I am obviously showing?

I may be missing something but this does not get my timer in the application to work. Can you please expand upon your answer for the ignorance I am obviously showing?

the answer is simple, you got source code for functional timer from me ( hope you test it, but have to say, it does work, it is simple cammand line program) and it is up to you implement it in your application

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.