Java Threading

by Mark Marucot on November 21, 2009

TimerTextField.java

import java.util.Date;

import javax.swing.JTextField;

public class TimerTextField extends JTextField implements Runnable {
private boolean gogo = true;
@Override
public void run() {
// TODO Auto-generated method stub
Date d;

while(gogo)
{
d = new Date();
this.setText(d.toString());
this.repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

public void closeMe()
{
gogo = false;
}
}

Apps.java

import java.awt.Component;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class Apps extends JFrame {

private TimerTextField ttf;
private JTextArea ta;
private JScrollPane jp;
private JButton jb;
public Apps()
{

this.setVisible(true);
this.setLayout(null);
this.setBounds(10,20,500,400);
init();
}

protected void init()
{
ttf = new TimerTextField();
addComponents(ttf, new Rectangle(10,30,250,25));

ta = new JTextArea(150,150);
jp = new JScrollPane(ta);
addComponents(jp, new Rectangle(10,65,150,150));

jb = new JButton();
jb.setText("Click Me");
addComponents(jb, new Rectangle(260,30,80,25));

jb.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
jb_method(e);

}

});

}

protected void jb_method(ActionEvent e)
{
ExecutorService es = Executors.newSingleThreadExecutor();
es.execute(ttf);
//ttf.run();
}

protected void addComponents(Component c, Rectangle r)
{
this.add(c);
c.setBounds(r);

}

public static void main(String[] arg)
{
new Apps();
}
}

Random Posts

Leave a Comment

Previous post:

Next post: