programda sayac diger sayfaya gecince sıfırlanmıyo kaldıgı yerden devam ediyor sadece yazilar degisiyor fakat saniye gelince kapatıyor kendini bunu nasıl cozebilrim

soruldu: 23 Şub '15, 06:26

engineers's gravatar image

engineers
356517091
cevap kabul oranı: 23%

kapatıldı: 03 Mar '15, 07:40

Bu soru 03 Mar '15, 07:40 engineers tarafından "Bu soru cevaplandı ve bir cevap daha önce kabul edildi" gerekçesiyle kapatıldı.


Kodunu aşağıdaki gibi değiştirip dener misin?

 public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                try {
                    sure pencere = new sure();
                    pencere.setVisible(true);
                    pencere.Say(); //Bu satırdaki kodu ekledim

                } catch (Exception ae) {
                    ae.printStackTrace();
                }

            }
        });

    }
permanent link

cevaplandı: 23 Şub '15, 16:05

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.6k103690
cevap kabul oranı: 28%

Cok tesekkurler son attıgın kod parcası cozdu Guzelce calisiyor emegine saglık iyi calismalar

(23 Şub '15, 16:55) engineers engineers's gravatar image

Calisiyor Bir sorun daha var sure sonunda Hata veriyır sure bitti yazdirmiyor.. Birde de programram calıstırıldıgında iki pencere aciyor..

(23 Şub '15, 17:16) engineers engineers's gravatar image

Daha önceki cevabımda verdiğim örnek kod parçasını senin koduna uyarlayıp aşağıdaki sınıfları hazırladım.

Not:Dikkatimi çekti sorduğun soruya çözüm olan cevapları oylamadığını fark ettim hatta diğer sorularına baktığımda sadece 1 tanesini onaylamışsın bu konuya özen gösterirsen güzel olur bence. Cevap salatasının içerisinden hangisinin gerçekten en iyi çözüm olduğunu, sonradan bu soruyu gören arkadaşların anlaması açısından daha faydalı olacaktır.

Şimdi gelelim kodlara

Geri sayma işlemini yapacak sınıf:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.Timer;

    public class Sayac {

        int Sure = 0;
        Timer t;

        JLabel label;

        public Sayac(JLabel label) {
            this.label = label;
        }

        public void Start() {
            Sure = 0;
            t = new Timer(1000, new Listener());
            t.start();
        }

        class Listener implements ActionListener {

            @Override
            public void actionPerformed(ActionEvent e) {
                Sure++;
                label.setText(String.valueOf(Sure));
                if (Sure == 60) {

                    t.stop();
                    label.setText("Müslüm Süre bitti :(");
                }
            }
        }
        public void Stop()
        {
            t.stop();
        }
    }

Geri saymanın yapılacağı JFrame:

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

@SuppressWarnings("serial")
public class FrmSure extends JFrame {

    JLabel label1, label2, label3, label4, label5, label11;
    Sayac sayac;

    public FrmSure() {
        super("SecimYer");
        Container con = getContentPane();
        con.setLayout(null);
        con.setBackground(Color.red);

        label5 = new JLabel();
        label5.setBounds(30, 100, 250, 30);
        label5.setFont(new Font("sansserif", Font.BOLD, 30));
        label5.setBackground(Color.yellow);
        con.add(label5);

        setVisible(true);
        setSize(300, 320);
        this.addWindowListener(new java.awt.event.WindowAdapter() {
            @Override
            public void windowClosing(java.awt.event.WindowEvent windowEvent) {

                if (sayac != null) {
                    sayac.Stop();
                }

                System.exit(0);
            }
        });

        sayac = new Sayac(label5);
        sayac.Start(); //Bu satırdaki kodu ekledim
    }
}

Sayacı test etmek için yazılan sınıf;

public class TestSure {
    public static void main(String[] args) {
        FrmSure frmSure=new FrmSure();
    }
}

İyi çalışmalar

permanent link

cevaplandı: 24 Şub '15, 02:01

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.6k103690
cevap kabul oranı: 28%

değiştirildi: 24 Şub '15, 06:05

Oy konusunu soyle soyliyim Bir cevapta puanladım sizi bisey hhakkı varmıs galb ben hepsini sizin cevaba bastım oyuzden suan puan veremiyorum .. Oyuzden yoksa onaylarim fakat itibar puanı yok onu osekilde oldugunu bilmeden sizin cevabı onayyladım 101 vardı hepsini verdim oyuzden itibar puani gelince oyliyacagım

(24 Şub '15, 06:47) engineers engineers's gravatar image

hımmm tekrar geri yolluyorum o zaman ;). Keşke bu aciziyetinizi daha önce söylemiş olsaydınız.

(24 Şub '15, 07:00) Müslüm ÖZTÜRK M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Tesekkurler Bir sorum daha olcak bu sayacı 2 sayfadan olusan bir seye ekledim ama ikinci sayfaya gecince sure sıfırlanmıyor aynı devam ediyor fakat sayac yazisi 1 den baslıyor diger sayfada bunu nasıl duzelte bilirim

(25 Şub '15, 06:52) engineers engineers's gravatar image

Yapmak istediğini Timer kullanarak yapabilirsin. Aşağıdaki örnek kod parçasının sana yardımcı olacağını düşünüyorum.

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        Say();
    }

    int sure=0;

    Timer t;
    void Say()
    {
        sure=0;
        t=new Timer(1000,new Listener());
        t.start();
    }

   class Listener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
         sure++;
            jLabel1.setText(String.valueOf(sure));
            if (sure==60) {
                t.stop();
                jLabel1.setText("Süre bitti");

            }
        }
    }
permanent link

cevaplandı: 23 Şub '15, 07:14

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.6k103690
cevap kabul oranı: 28%

Asagida yazdıgım koda jButton1 ekledim fakat bu seferde buttona basıldıgında yazma ya basladı ben frame acıldıktan sonra saymasını ıstıyorum

(23 Şub '15, 08:29) engineers engineers's gravatar image
package System;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@SuppressWarnings("serial")

public class sure extends JFrame implements ActionListener {
      private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            Say();
        }
        int Sure=0;
        Timer t;
    void Say()
    {
        Sure=0;
        t=new Timer(1000,new sure());
        t.start();
    }

JLabel label1,label2,label3,label4,label5,label11;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                try{
                    sure pencere=new sure();
                    pencere.setVisible(true);

                }catch(Exception ae){
                    ae.printStackTrace();
                }

            }
        });

    }

    public sure(){
        super("SecimYer");
        Container con=getContentPane();
        con.setLayout(null);
        con.setBackground(Color.red);

        label5=new JLabel();
        label5.setBounds(30,100,250,30);
        label5.setFont(new Font("sansserif",Font.BOLD,30));
        label5.setBackground(Color.yellow);
        con.add(label5);

        setVisible(true);
        setSize(300,320);
    }
    @Override
    public void actionPerformed(ActionEvent e) {

           Sure++;
           label5.setText(String.valueOf(Sure));
           if (Sure==60) {
               t.stop();
               label5.setText("Süre bitti");

           }        
    }

}

Ama olmuyor yinede oyle duruyor sayan bir sey yok
permanent link

cevaplandı: 23 Şub '15, 08:23

engineers's gravatar image

engineers
356517091
cevap kabul oranı: 23%

değiştirildi: 23 Şub '15, 09:17

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.6k103690

main metodunun içinde deneme, bir tane form yap ve button' un click event'inde saydırmayı dene. Yukarıdaki verdiğim cevaptaki örneği yeni bir form uygulaması açarak dene. sonra kendi koduna uygulamaya çalış. Kolay gelsin.

(23 Şub '15, 08:40) Müslüm ÖZTÜRK M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

UI Thread ve Backend thread lerinin birbirinden bağımsız çalışmasından kaynaklanan bir problem sanırım.

(23 Şub '15, 10:00) Turgay Can Turgay%20Can's gravatar image

Evet Ana thread sonlandığı için Timer ile çalışan thread' de sonlanıyor..Bu nedenle form uygulamasında button ile say() metodunu tetiklemesini önerdim.

(23 Şub '15, 15:49) Müslüm ÖZTÜRK M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,077

Soruldu: 23 Şub '15, 06:26

Görüntüleme: 790 kez

Son güncelleme: 03 Mar '15, 07:40

powered by BitNami OSQA