TIjd importeren

Status
Niet open voor verdere reacties.

tristanb

Gebruiker
Lid geworden
21 jun 2007
Berichten
32
Hoi,

Sinds kort ben ik begonnen met het programmeren van java, maar ik zit nu met een probleem. Ik wil een soort van stopwatch maken (niet met milliseconde ofzo, maar gewoon: uren, minuten en seconden).

Nu weet ik niet hoe ik de huidige tijd kan importeren in een textveld. Wie kan mij het uitleggen?

Hier is iig mijn code:

Code:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class stopwatch extends Applet	implements ActionListener
{
	Button startknop, stopknop;
	TextField starttijd, stoptijd, uren, minuten, sec;
	Label titel;

	public void init()
	{
		// Layout groote
				setLayout(null);
				setSize (500,300);

		// Achtergrond
				setBackground( Color.lightGray  );

		// Label
				titel = new Label("Gewerkte uren");
				titel.setBounds(200,10,100,10);
				add(titel);

		// Knoppen
				startknop = new Button("Start tijd");
				startknop.setBounds(230,200,50,20);
				startknop.addActionListener(this);
				add(startknop);

				stopknop = new Button("Stop tijd");
				stopknop.setBounds(300,200,50,20);
				stopknop.addActionListener(this);
				add(stopknop);

		// Textvelden
				starttijd = new TextField("");
				starttijd.setBounds(230, 150, 50,20);
				starttijd.setEnabled(false);
				add(starttijd);

	}

	public void paint(Graphics g)
	{
	}

	public void actionPerformed(ActionEvent e)
	{	if(true)
		{

		}

	}
}

Wie kan mij helpen?
 
Als je de huidige tijd in een textfield wil zetten kan je beter gebruiken maken van JFormattedTextField.

Code:
Format df = new SimpleDateFormat("hh:mm:ss:SS");
JFormattedTextField datefield = new JFormattedTextField(df);
datefield.setValue(new Date());

Met een JFormattedTextField gebruikt een Formatter om een bepaalde waarde te laten zien,
in dit geval wordt er gebruik gemaakt van SimpleDateFormat om een datum weer te geven. De huidige tijd krijg je door een nieuw Date() object te maken.

Maar als je een stopwatch wil maken, zal ik niet de huidige tijd hiervoor gebruiken. Maar een Timer aanmaken. (uit de javax.swing, niet die uit java.util!)..
De constructor heeft 2 parameters de eerste is interval in ms en de tweede de actionListener. De ActionPerformed van deze actionListener wordt na elk interval aangeroepen. Dus als de interval 1000ms is wordt deze om de seconde aangeroepen.

In een variable houdt je bij hoeveel seconden verstreken zijn en deze zet je dan in een textField (met .setText("seconde:" + seconden);
 
Skinflowers, hartstikke leuk dat je me wil helpen :D

Ik snap er alleen niet zoveel van wat je bedoelt met een: Jformated textfield.

Zou je dat misschien kunnen invoegen in mijn bovenstaande code? zodat ik een idee krijg? Mij help je er iig erg mee!

Bedankt alvast
 
Laatst bewerkt:
Wat is de betekenis van if(true) ?? en wat is het probleem ?

Verder ben ik nooit zo voorstander van om "this" als actionlistener toe te voegen aan al je knoppen.. Zelf krijgt bij mij elke knop een eigen actionListener.

Code:
JButton knop = new JButton("knop");
knop.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
..//hier je code per knop...
}
}

Dan hoeft je ook niet e.getSource() te doen.. en blijft alle code van een knop bij elkaar.

Maar als je begint met programeren moet je even tijd steken en in debug mogelijkheden van je IDE. Zet een bv een breakpoint in je actionPerformed.. De IDE zal nu hier stoppen en daarna kan je regel voor regel door je code stappen en zien waar het fout gaat...
 
Hoi SkinFlower,

Dat wat ik nu heb werkt inprincipe wel :)

mijn vraag was eigenlijk of je de code voor de tijd in een tekstveld kon zetten :P

daarna red ik het zelf allemaal (waarschijnlijk) wel ;)

iig bedankt alvast! :thumb:
 
Ik heb de code een klein beetje gewijzigd. Ik heb de awt code vervangen door Swing. (ipv Applet/Button/TextField gebruik je dan JApplet/JButton,JTextField).
Er is namelijk geen AWT variant van de JFormattedTextField, Swing heeft nog veel meer mogelijkheden / voordelen....

En ik heb de klassenaam aangepast. Klassen moeten altijd(!) met een hoofdletter beginnen.

veel succes verder...


Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class StopWatch extends JApplet implements ActionListener {

    JButton startknop, stopknop;
    JTextField stoptijd, uren, minuten, sec;
    JFormattedTextField starttijd;
    JLabel titel;
    Date startDate, stopDate;
    
    @Override
    public void init() {
        // Layout groote
        setLayout(null);
        setSize(500, 300);

        // Achtergrond
        setBackground(Color.lightGray);

        // Label
        titel = new JLabel("Gewerkte uren");
        titel.setBounds(200, 10, 100, 10);
        add(titel);

        // Knoppen
        startknop = new JButton("Start tijd");
        startknop.setBounds(230, 200, 50, 20);
        startknop.addActionListener(this);
        add(startknop);

        stopknop = new JButton("Stop tijd");
        stopknop.setBounds(300, 200, 50, 20);
        stopknop.addActionListener(this);
        add(stopknop);

        // Textvelden
        Format dateFormat = new SimpleDateFormat("hh:mm:ss");
        starttijd = new JFormattedTextField(dateFormat);
        starttijd.setBounds(230, 150, 50, 20);
        starttijd.setEnabled(false);
        add(starttijd);

    }

    @Override
    public void paint(Graphics g) {
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == startknop) {
            startDate = new Date();
            starttijd.setValue(startDate);
        }
    }
}
 
Geweldig! Dank je wel.

Ik ga ermee experimenteren en het in mijn applet verwerken.

Die JButtons zien er trouwens veel beter uit dan de normale :P

nogmaals,

bedankt!
 
Heb inmiddels weer een probleem. Ik wil een dropdown menutje maken (doet het inprincipe) maar ben verder gegaan met de applet van SkinFlowers.

Ik krijg nu de volgende melding:
Code:
StopWatch is not abstract and does not override abstract method itemStateChanged(java.awt.event.ItemEvent) in java.awt.event.ItemListener
public class StopWatch extends JApplet implements ActionListener, ItemListener {

Wie weet wat ik moet doen?

Dit is mijn hele code:

Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.util.*;
import java.awt.Color.*;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JTextField;


public class StopWatch extends JApplet implements ActionListener, ItemListener {

    JButton startknop, stopknop;
    JTextField stoptij, uren, minuten, sec;
    TextField stoptijd;
    JFormattedTextField starttijd, stoptijdd;
    JLabel titel;
    Date startDate, stopDate;
    Choice klanten;

    @Override
    public void init() {
        // Layout groote
        setLayout(null);
        setSize(500, 300);

        // Achtergrond
        setBackground(Color.lightGray);

        // Label
        titel = new JLabel("Gewerkte uren");
        titel.setBounds(200, 10, 100, 10);
        add(titel);

        // Knoppen
        startknop = new JButton("Start tijd");
        startknop.setBounds(230, 200, 50, 20);
        startknop.addActionListener(this);
        add(startknop);

        stopknop = new JButton("Stop tijd");
        stopknop.setBounds(300, 200, 50, 20);
        stopknop.addActionListener(this);
        add(stopknop);

        // Textvelden
        Format dateFormat = new SimpleDateFormat("hh:mm:ss");
        starttijd = new JFormattedTextField(dateFormat);
      	starttijd.setBounds(210, 50, 100,20);
        starttijd.setEnabled(false);
        add(starttijd);

        stoptijdd = new JFormattedTextField(dateFormat);
		stoptijdd.setBounds(320, 50, 100, 20);
        stoptijdd.setEnabled(false);
        add(stoptijdd);

        // Choices
				
						klanten = new Choice();
						klanten.addItem("Kies een persoon");
						klanten.addItem("1");
						klanten.addItem("2");
						klanten.addItem("3");
						klanten.addItem("4");
						klanten.addItem("5");
						klanten.addItem("6");
						klanten.setBounds(20,50,140,10);
						klanten.addItemListener(this);
						add(klanten);


    }

    @Override
    public void paint(Graphics g) {
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == startknop)
        {
            startDate = new Date();
            starttijd.setValue(startDate);
        }

        if (e.getSource() == stopknop)
        {
			stopDate = new Date();
			stoptijdd.setValue(stopDate);
		}


    }
}

In een andere applet doet hij het wel :S met dezelfde import lijst etc.
 
Je gebruikt implements ItemListener maar dan moet je ook de methode itemStateChanged(java.awt.event.ItemEvent) toevoegen aan je StopWatch...

(als je IDE gebruikt kan je vaak op de error in de source code klikken, dan quickfix, dan zal deze de ontbrekende methodes toevoegen..).
 
Die staat er toch al in?

Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.util.*;
import java.awt.Color.*;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
[B]import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;[/B]
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JTextField;


public class StopWatch extends JApplet implements ActionListener, ItemListener {

hierboven dik gedrukt. Maar hij doet het alsnog niet.

Blijf dezelfde code houden :S

En wat is IDE :p
 
voeg eens toe:

void itemStateChanged(ItemEvent e) {
//code als user listbox wijzigt
}

Een ide is integrated development enviroment..Of een programma om mee te programeren. Netbeans, Eclipse, BlueJ zijn (denk ik) de meeste gebruikte...
Maakt het leven van programmeur in ieder geval een stuk gemakkelijker...
 
Laatst bewerkt:
Hij doet het nu inderdaad en alles is zo goed als af. :thumb: Top werk SkinFlowers

Maar dan nu het volgende probleem.

Hoe krijg ik de applet werkend zonder dat iemand de editor nodig heeft.

Ik heb al gegoogled en heb de applet in een HTM bestand gezet maar ik kreeg een error.

Wie weet en kan me helpen?
 
Heb het doorgelezen en van alles geprobeerd, bedankt voor de link. :thumb:

Helaas werkt het nog steeds niet. Ook heb ik verschillende .jar naar exe converters geprobeerd maar ook dat werkt niet.

.Jar bestanden starten ook niet op. Ik zie alleen dat de muis even verandert, verder niets.
 
Is gelukt. Heb hem maar in een browser geplaatst. Was de enige optie.

Wat mij betreft een slotje :D

SkinFlowers, bedankt voor je hulp :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan