This project was made entirely in JAVA, no external librarys included. This was made to somewhat replicate the
Destiny countdown timer
from "Stargate Universe" but as a clock rather than a countdown timer. This is eventually going to be used on my Raspberry Pi as a
background program to a little LCD monitor, so I can use it as a clock in my studio. Source code is below. "Anquietas" font required.
Anquietas Font Link
package destinytimer;
import java.awt.Color;
import java.awt.Font;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.GridBagLayout;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
*
* @author Micro230
*/
public class DestinyTimer {
//Change number at end of "device" line to change monitor
static GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0];
static final DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SS");
public static void main(String[] args) {
//Create GUI
JFrame frame = new JFrame();
JPanel panel = new JPanel();
JLabel timer = new JLabel("xx:xx:xx:xxx");
//Fullscreen
device.setFullScreenWindow(frame);
//Center Vertically
panel.setLayout(new GridBagLayout());
//Font and Add Timer
timer.setFont(new Font("Anquietas", Font.PLAIN, 50));
panel.add(timer);
//Style
panel.setBackground(Color.black);
timer.setForeground(Color.white);
//Frame Finalize
frame.addComponentListener(new ComponentListener() {
@Override
public void componentHidden(ComponentEvent arg0) {}
@Override
public void componentMoved(ComponentEvent arg0) {}
@Override
public void componentResized(ComponentEvent arg0) {
timer.setFont(new Font("Anquietas", Font.PLAIN, (frame.getWidth() + frame.getHeight()) / 10));
frame.getContentPane().revalidate();
}
@Override
public void componentShown(ComponentEvent e) {}
});
frame.setContentPane(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//Reinitalize Font after Frame Loads
timer.setFont(new Font("Anquietas", Font.PLAIN, (frame.getWidth() + frame.getHeight()) / 10));
frame.getContentPane().revalidate();
//Update
while(true) {
String mil = dateFormat.format(Calendar.getInstance().getTime()).split(":")[3];
String time = dateFormat.format(Calendar.getInstance().getTime());
if(mil.length() > 2) {
timer.setText(time.substring(0, time.length()-1));
}
else{
timer.setText(time);
}
timer.updateUI();
}
}
}