terça-feira, 29 de abril de 2008

JXTaskPane com relogio.

Post com codificação exemplo que foi solicitado por um amigo por estar tendo dificuldades de apresentar um relogio que pega a hora do sistema e apresentar um uma taskpane.

Segue codificação:


import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import org.jdesktop.swingx.JXFrame;
import org.jdesktop.swingx.JXLabel;
import org.jdesktop.swingx.JXTaskPane;
import org.jdesktop.swingx.JXTaskPaneContainer;

public class taskPane extends JXFrame implements ActionListener {

// responsavel pelo formato de apresentação da hora.
DateFormat formatarHora = new SimpleDateFormat("HH:mm:ss");
// responsavel pelo tempo de atualização do relogio.
Timer timer;
// responsavel em aporesentar o relogio.
JXLabel label;

public taskPane(){
super("TaskPane");
setSize(800, 600);
setJMenuBar(createMenuBar());
add(createTaskPaneContainer(), BorderLayout.WEST);

// adiciona timer no frame e inicializa o temporizador
timer = new Timer(0, null);
timer.addActionListener(this);
timer.setCoalesce(true);
timer.start();
}

protected JMenuBar createMenuBar(){
JMenuBar menuBar = new JMenuBar();

JMenu menu = new JMenu("Menu");
menu.setMnemonic(KeyEvent.VK_M);
menuBar.add(menu);

JMenuItem menuItem = new JMenuItem("Sair");
menuItem.setMnemonic(KeyEvent.VK_S);
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_S,
ActionEvent.ALT_MASK));
menuItem.setActionCommand("sair");
menuItem.addActionListener(this);
menu.add(menuItem);

return menuBar;
}

protected JXTaskPaneContainer createTaskPaneContainer(){
JXTaskPaneContainer taskPaneContainer = new JXTaskPaneContainer();

JXTaskPane taskPane = new JXTaskPane();
taskPane.setTitle("Relógio ");
taskPane.setSpecial(true);
taskPaneContainer.add(taskPane);

label = new JXLabel();
taskPane.add(label);

return taskPaneContainer;
}

public static void createGuiAndShow(){
taskPane taskPaneDemo = new taskPane();
taskPaneDemo.setExtendedState(JXFrame.MAXIMIZED_BOTH);
taskPaneDemo.setDefaultCloseOperation(JXFrame.EXIT_ON_CLOSE);
taskPaneDemo.setVisible(true);
}

public void actionPerformed(ActionEvent e) {
// apresenta e atualiza o display do relogio, pegando a hora diretamente do sistema.
label.setText(formatarHora.format(System.currentTimeMillis()));

if("sair".equals(e.getActionCommand())){
System.exit(0);
}
}

public static void main(String args[]){

SwingUtilities.invokeLater(new Runnable() {
public void run() {
createGuiAndShow();
}
});
}
}


:: Referência

SwingLabs API

Nenhum comentário: