/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
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

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste