Suorittaminen kerran sekunnissa

Lueskelin yhtä java-kirjaa, ja tein tämmöisen ohjelman:
import javax.swing.*;
import java.awt.*;
import java.util.*;

public class ClockPanel extends JPanel {
public ClockPanel() {
super();
String currentTime = getTime();
JLabel time = new JLabel("Kello: ");
JLabel current = new JLabel(currentTime);
add(time);
add(current);
}

String getTime() {
String Kello;
// get current time and date
Calendar now = Calendar.getInstance();
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute = now.get(Calendar.MINUTE);
int month = now.get(Calendar.MONTH) 1;
int day = now.get(Calendar.DAY_OF_MONTH);
int year = now.get(Calendar.YEAR);
int second = now.get(Calendar.SECOND);

String monthName = "";
switch (month) {
case (1):
monthName = "Tammikuu";
break;
case (2):
monthName = "Helmikuu";
break;
case (3):
monthName = "Maaliskuu";
break;
case (4):
monthName = "Huhtikuu";
break;
case (5):
monthName = "Toukokuu";
break;
case (6):
monthName = "Kesäkuu";
break;
case (7):
monthName = "Heinäkuu";
break;
case (8):
monthName = "Elokuu";
break;
case (9):
monthName = "Syyskyy";
break;
case (10):
monthName = "Lokakuu";
break;
case (11):
monthName = "Marraskuu";
break;
case (12):
monthName = "Joulukuu";
}
Kello = monthName " " day ", " year " "
hour ":" minute ":" second;
return Kello;
}
}



Tietenkin mulla on vielä yks ohjelma, joka antaa graaffisen tilan (vai miksi sitä pitäisi kutsua). Ongelmana on se, että kyseinen ohjelma on hyödytön, ellei se suorita itseänsä kerran sekunnissa, tai minuutissa (jos poistaa sekunnit ohjelmasta).
Elikä minkäslainen koodinpätkä pitäisi lisätä ja mihin kohtaan?
4439
Äänestä

Muut lukivat myös

Vastaukset 4

Vanhimmat

ei ohjelman itseään tarvitse uudelleen suorittaa, vaan sekunnin välein voidaan suorittaa mitä ohjelmoija haluaa.

package untitled1;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.Timer;
import java.awt.*;
import javax.swing.JLabel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
* Title:
*
* Description:
*
* Copyright: Copyright (c) 2006
*
* Company:
*
* @author not attributable
* @version 1.0
*/
public class Frame1 extends JFrame {
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
JButton jButton1 = new JButton();
JLabel jLabel1 = new JLabel();

public Frame1() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}

/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(borderLayout1);
setSize(new Dimension(400, 300));
setTitle("Frame Title");
jButton1.setText("jButton1");
jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));
jLabel1.setText("jLabel1");
contentPane.add(jButton1, java.awt.BorderLayout.NORTH);
contentPane.add(jLabel1, java.awt.BorderLayout.CENTER);
}

public void jButton1_actionPerformed(ActionEvent e) {
jLabel1.setText("joo");

Timer t = new Timer (1000, new
ActionListener ()
{
public void actionPerformed (ActionEvent event)
{
jLabel1.setText((jLabel1.getText()) "-");
}
});
t.start ();

}
}


class Frame1_jButton1_actionAdapter implements ActionListener {
private Frame1 adaptee;
Frame1_jButton1_actionAdapter(Frame1 adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
---------
ja tuosta siis oleellisin osuus tässä:

jButton1_actionPerformed(ActionEvent e) {
jLabel1.setText("joo");

Timer t = new Timer (1000, new
ActionListener ()
{
public void actionPerformed (ActionEvent event)
{
jLabel1.setText((jLabel1.getText()) "-");
}
});
t.start ();

}
}

siinä kohtaan
{
jLabel1.setText((jLabel1.getText()) "-");
}

laitetaan, mitä kerran sekunnissa halutaan tehtävän. eli noiden aaltosulkujen väliin.

tuo esimerkki-koodi käynnistää laskurin kun jButton1:ä klikataan. sen jälkeen se kirjoittaa jLabel1:een "-"-merkin vaikka hamaan tulevaisuuteen saakka, tai ainakin siihen saakka kun ajastin pysäytetään.

koodissa on tietty se vika, että jButton1 pitäisi disabloida sen jälkeen kun sitä klikkaa. muuten noita ajastimia voi luoda rajattoman määrän. oleellista on myös import kohdassa olla:
import javax.swing.Timer; //tai sitten koodissasi mainittu:
import javax.swing.*;

Äänestä
  • Voisitko tehdä tuohon mun ohjelmaan sen jutun, ku en oikeen ymmärtänyt, mitä koodia siihen aaltosulkeiden väliin
    laittaa. tää ois minulle helpoin tapa oppia kyseinen tapa. :) Kiitos!

    Äänestä

  • afaef kirjoitti:

    Voisitko tehdä tuohon mun ohjelmaan sen jutun, ku en oikeen ymmärtänyt, mitä koodia siihen aaltosulkeiden väliin
    laittaa. tää ois minulle helpoin tapa oppia kyseinen tapa. :) Kiitos!

    sorry kun aika on vähän tiukassa, eli ehtisin aikaisintaan perjantaina tekemään koodin valmiiksi..

    mutta jos haluat itse kokeilla, niin _kaikki_ niiden mainittujen aaltosulkeiden välissä oleva suoritetaan kerran sekunnissa.
    eli sinne sitä koodia, missä otetaan aika string-muotoon ja kirjoitetaan jlabel1:een.


    tai sitten jos joku toinen ehtisi laittamaan tänne mallikoodin. itse olen aika surkea javan kanssa ja mulla tollaisenkin tekeminen vie paljon aikaa..

    Äänestä

  • ehtiä.. kirjoitti:

    sorry kun aika on vähän tiukassa, eli ehtisin aikaisintaan perjantaina tekemään koodin valmiiksi..

    mutta jos haluat itse kokeilla, niin _kaikki_ niiden mainittujen aaltosulkeiden välissä oleva suoritetaan kerran sekunnissa.
    eli sinne sitä koodia, missä otetaan aika string-muotoon ja kirjoitetaan jlabel1:een.


    tai sitten jos joku toinen ehtisi laittamaan tänne mallikoodin. itse olen aika surkea javan kanssa ja mulla tollaisenkin tekeminen vie paljon aikaa..

    No kiitoksia kummiskin, ku viitsit autttaa :)

    Äänestä

Kommentoi aloitusta


afaef kirjoitti:

Lueskelin yhtä java-kirjaa, ja tein tämmöisen ohjelman:
import javax.swing.*;
import java.awt.*;
import java.util.*;

public class ClockPanel extends JPanel {
public ClockPanel() {
super();
String currentTime = getTime();
JLabel time = new JLabel("Kello: ");
JLabel current = new JLabel(currentTime);
add(time);
add(current);
}

String getTime() {
String Kello;
// get current time and date
Calendar now = Calendar.getInstance();
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute = now.get(Calendar.MINUTE);
int month = now.get(Calendar.MONTH) 1;
int day = now.get(Calendar.DAY_OF_MONTH);
int year = now.get(Calendar.YEAR);
int second = now.get(Calendar.SECOND);

String monthName = "";
switch (month) {
case (1):
monthName = "Tammikuu";
break;
case (2):
monthName = "Helmikuu";
break;
case (3):
monthName = "Maaliskuu";
break;
case (4):
monthName = "Huhtikuu";
break;
case (5):
monthName = "Toukokuu";
break;
case (6):
monthName = "Kesäkuu";
break;
case (7):
monthName = "Heinäkuu";
break;
case (8):
monthName = "Elokuu";
break;
case (9):
monthName = "Syyskyy";
break;
case (10):
monthName = "Lokakuu";
break;
case (11):
monthName = "Marraskuu";
break;
case (12):
monthName = "Joulukuu";
}
Kello = monthName " " day ", " year " "
hour ":" minute ":" second;
return Kello;
}
}



Tietenkin mulla on vielä yks ohjelma, joka antaa graaffisen tilan (vai miksi sitä pitäisi kutsua). Ongelmana on se, että kyseinen ohjelma on hyödytön, ellei se suorita itseänsä kerran sekunnissa, tai minuutissa (jos poistaa sekunnit ohjelmasta).
Elikä minkäslainen koodinpätkä pitäisi lisätä ja mihin kohtaan?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu