Avatar billede flodhesten Nybegynder
22. januar 2009 - 16:15 Der er 6 kommentarer og
1 løsning

Tidsbestemt skift af Jlabel

Hejsa. Jeg har et JLabel der ændre indhold når man klikker på en submit-knap til et tilfældigt tal mellem 1 og 50. Jeg kunne godt tænke mig at når man klikkede på knappen så skiftede den mange gange indtil at stoppe efter noget tid. Altså hvis man klikker på knappen så skriver den et random tal holder en kort pause og skriver så et nyt tal. Den skal så gøre dette 10 gange for bagefter at stoppe.

Jeg forestiller mig noget løkkeværk med en timer / sleep agtigt.

Nogen der kan hjælpe?
Avatar billede arne_v Ekspert
22. januar 2009 - 17:21 #1
For et aar siden lavede jeg dette eksempel til et andet spoergsmaal - det maa kunne
inspirere lidt:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class NewDynNum extends JFrame implements ActionListener {
    private JTextField txt;
    private JButton btn;
    private int n;
    public NewDynNum() {
        n = 0;
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new BorderLayout());
        txt = new JTextField();
        txt.setText(Integer.toString(n));
        getContentPane().add(txt, BorderLayout.CENTER);
        btn = new JButton("Count 10 up");
        btn.addActionListener(this);
        getContentPane().add(btn, BorderLayout.SOUTH);
        pack();
    }
    public void incr() {
        n++;
        txt.setText(Integer.toString(n));
    }
    public void actionPerformed(ActionEvent ev) {
        if (ev.getSource() == btn) {
            T t = new T(this);
            t.start();
        }
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                NewDynNum f = new NewDynNum();
                f.setVisible(true);
            }
        });
    }
}

class T extends Thread {
    private NewDynNum dn;
    public T(NewDynNum dn) {
        this.dn = dn;
    }
    public void run() {
        for (int i = 0; i < 10; i++) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    dn.incr();
                }
            });
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
        }
    }
}
Avatar billede flodhesten Nybegynder
22. januar 2009 - 19:19 #2
Jo, det er helt sikkert noget jeg kan lade mig inspirere af, men er der ikke en måde at fryse omgivelserne på, mens den tæller op?
Avatar billede arne_v Ekspert
23. januar 2009 - 04:16 #3
Hvad mener du med at fryse ?
Avatar billede flodhesten Nybegynder
24. januar 2009 - 21:51 #4
Det jeg tænker på, er om det er muligt at gøre sådan at man ikke kan trykke på knappen mens en up-tælling er i gang.
Avatar billede arne_v Ekspert
24. januar 2009 - 22:07 #5
setEnabled(false) ved klik og setEnabled(true) når færdig
Avatar billede flodhesten Nybegynder
24. januar 2009 - 22:42 #6
Ja okay. Jeg vil forsøge at lave noget med det.

Du får point og vi afslutter i denne omgang.
Avatar billede arne_v Ekspert
24. januar 2009 - 22:42 #7
så må jeg hellere få smidt et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester