|
| Ur på JLabel Fra : Hades |
Dato : 08-11-01 17:05 |
|
Hej gruppe!
Jeg har store problemer med at lave et ur, ved hjælp at tråde(Threads), så
det virker på en JLabel.
Jeg har har fundet ud af, hvordan man laver det i en applet, men jeg kan
ikke finde ud af at lave om, så det kan køre i en almindelig applikation.
Koden jeg har rodet lidt med er følgende:
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Color;
import java.util.*;
import java.text.DateFormat;
public class UrThread // extends java.applet.Applet implements Runnable
{
private JLabel label1;
private Thread clockThread = null;
public void init()
{
setBackground(Color.white);
}
/*
public UrThread()
{
Container c = getContentPane();
c.setLayout( new FlowLayout());
JLabel label1 = new JLabel();
c.add( label1 );
}
*/
public void start() {
if (clockThread == null) {
clockThread = new Thread(this, "Clock");
clockThread.start();
}
}
public void run() {
Thread myThread = Thread.currentThread();
while (clockThread == myThread) {
//repaint();
//label1.setText(datoformat);
//label1.updateUI();
try {
Thread.sleep(1000);
} catch (InterruptedException e){ }
}
}
public void paint(Graphics g) {
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
DateFormat dateFormatter = DateFormat.getTimeInstance();
g.drawString(dateFormatter.format(date), 5, 10);
}
public void stop() {
clockThread = null;
}
}
håber, der er nogle venlige sjæle, der kan hjælpe mig.
Mvh
Hades
| |
Mikkel S (08-11-2001)
| Kommentar Fra : Mikkel S |
Dato : 08-11-01 18:39 |
|
>
> import javax.swing.*;
> import java.awt.Graphics;
> import java.awt.Color;
> import java.util.*;
> import java.text.DateFormat;
>
> public class UrThread // extends java.applet.Applet implements Runnable
> {
> private JLabel label1;
> private Thread clockThread = null;
>
> public void init()
> {
> setBackground(Color.white);
>
> }
>
> /*
> public UrThread()
> {
> Container c = getContentPane();
> c.setLayout( new FlowLayout());
> JLabel label1 = new JLabel();
> c.add( label1 );
> }
> */
>
> public void start() {
> if (clockThread == null) {
> clockThread = new Thread(this, "Clock");
> clockThread.start();
> }
> }
> public void run() {
> Thread myThread = Thread.currentThread();
> while (clockThread == myThread) {
> //repaint();
> //label1.setText(datoformat);
> //label1.updateUI();
> try {
> Thread.sleep(1000);
> } catch (InterruptedException e){ }
> }
> }
> public void paint(Graphics g) {
> Calendar cal = Calendar.getInstance();
> Date date = cal.getTime();
> DateFormat dateFormatter = DateFormat.getTimeInstance();
> g.drawString(dateFormatter.format(date), 5, 10);
> }
> public void stop() {
> clockThread = null;
> }
> }
>
> håber, der er nogle venlige sjæle, der kan hjælpe mig.
>
> Mvh
> Hades
>
>
Først bliver du nød til at lave lidt om:
public void run()
{
Thread myThread = Thread.currentThread();
while (clockThread == myThread)
{
String kkkk = paint();
label1.setText(kkkk);
label1.updateUI();
try {
Thread.sleep(1000);
} catch (InterruptedException e){ }
}
}
public String paint()
{
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
DateFormat dateFormatter = DateFormat.getTimeInstance();
String ur = ""+dateFormatter.format(date);
return str
}
| |
Jacob Nordfalk (08-11-2001)
| Kommentar Fra : Jacob Nordfalk |
Dato : 08-11-01 22:35 |
|
Hades wrote:
> Jeg har har fundet ud af, hvordan man laver det i en applet, men jeg kan
> ikke finde ud af at lave om, så det kan køre i en almindelig applikation.
Det skyldes at du udnytter at systemet kalder start() og stop() på en
applet - men det gælder kun
appletter, og derfor bliver din start()-
og stop()-metode ikke mere kaldt
Flyt koden du havde i start() over i en konstruktør i stedet.
>
> Koden jeg har rodet lidt med er følgende:
>
> import javax.swing.*;
> import java.awt.Graphics;
> import java.awt.Color;
> import java.util.*;
> import java.text.DateFormat;
>
> public class UrThread // extends java.applet.Applet implements Runnable
> {
> private JLabel label1;
> private Thread clockThread = null;
>
> public void init()
> {
> setBackground(Color.white);
>
> }
>
> /*
> public UrThread()
> {
> Container c = getContentPane();
> c.setLayout( new FlowLayout());
> JLabel label1 = new JLabel();
> c.add( label1 );
> }
> */
>
> public void start() {
> if (clockThread == null) {
> clockThread = new Thread(this, "Clock");
> clockThread.start();
> }
> }
> public void run() {
> Thread myThread = Thread.currentThread();
> while (clockThread == myThread) {
> //repaint();
> //label1.setText(datoformat);
> //label1.updateUI();
> try {
> Thread.sleep(1000);
> } catch (InterruptedException e){ }
> }
> }
> public void paint(Graphics g) {
> Calendar cal = Calendar.getInstance();
> Date date = cal.getTime();
> DateFormat dateFormatter = DateFormat.getTimeInstance();
> g.drawString(dateFormatter.format(date), 5, 10);
> }
> public void stop() {
> clockThread = null;
> }
> }
>
> håber, der er nogle venlige sjæle, der kan hjælpe mig.
>
> Mvh
> Hades
--
Jacob Nordfalk
| |
|
|