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();
}
}