[Çözüldü] Java Kelime Hatırlatıcı program

Başlatan Kaanx, 28 Ocak 2014 - 23:39:11

« önceki - sonraki »

0 Üyeler ve 4 Ziyaretçi konuyu incelemekte.

Kaanx

Merhaba arkadaşlar Java ile ilgili bir proje yapmak istiyorum fakat başaramadım. Bir text file içerisinden yada içerisinde tanıma Sözleri bize hatırlatıcak bir program yapmak istiyorum. Word reminder olarak arattım fakat bir örnek te bulamadım. Bilgisayar acıldıgında her bir saatte bize başlat menusunun yanından uyarı ekranı cıkarıp tanımlı sözlerden birtanesini ekrana yazıcak. Yardımcı olursanız cok memnun olurum.

heartsmagic

Bu gibi konularda yardımcı olacak arkadaşlar genellikle senden bir şeyler yapmanı beklerler. Eğer kod kısmına geçmediysen kafandaki algoritmayı yazabilirsin örneğin. Arkadaşlar o konuda öneri verirler sana. Sonra kod kısmına geçer, biraz kodlar takıldığın yerde yine sorarsın. Bu şekilde başlıkta hiç çalışma olmadan birilerinin sana yardımcı olması çok zor.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Kaanx

Hocam kod kısmına geçmedim henüz örnek progrmları inceliyorum ama mantık şu ;

Programamız içerisinde 20 tane dizimiz olucak

int[] Cumle1 = {"Merhaba"};
.
.
.
.
Sonra bu dizileri her 1 saatte kucuk bir uyarı ekranı olarak ekrana bastırıcak kucuk bir uyarı penceresinde.

mthan

Alıntı yapılan: Kaanx - 29 Ocak 2014 - 01:06:51
Hocam kod kısmına geçmedim henüz örnek progrmları inceliyorum ama mantık şu ;

Programamız içerisinde 20 tane dizimiz *olacak

int[] Cumle1 = {"Merhaba"};
.
.
.
.
Sonra bu dizileri her 1 saatte kucuk bir uyarı ekranı olarak ekrana bastırıcak kucuk bir uyarı penceresinde.
öncelikle hatırladıgım kadarıyla
-java io sınıfına bir göz atmalısın;çünkü belirli bir dosyadan okuma yapacak programın Scanner nesnesini kullanabilirsin dosya için
-sonra uyarı için JOptionPane kullanabilirsin kullanımı gayet basittir
-son olarak zor olan kısım timer sınıfı sonuçta programın sürekli çalışmamalı 1 saatte 1 kez çalışması gerekecek programın
sürekli çalışması sistem açısından pek güzel olmaz.
Özgür yazılım....
http://getgnu.org/

hckr

Araştırman gereken bu küçük pencereyi Java ile nasıl açacağın. Uygulamanı sistem tepsisine yerleștirirsin. Her bir saatte bir sıradaki kelimeyi ekrana basar
http://docs.oracle.com/javase/6/docs/api/java/awt/TrayIcon.html displayMessage() metodunu kullanırsın bu iş için.

Daha güzel bir şey hazırlamak istersen
http://stackoverflow.com/questions/3240415/how-to-create-a-notification-in-swing

Kaanx




yani bunlara göre arkadaşlar söyle bi yol çizebilir miyim ?

package name;

imports region ;

Starting main (){
cümle dizilerini tanımla
timer ayarala
display komutunu ayarla
while(true){
Displaymessage("Unga Bunga !");


}

}

mthan

Alıntı yapılan: Kaanx - 29 Ocak 2014 - 02:03:45



yani bunlara göre arkadaşlar söyle bi yol çizebilir miyim ?

package name;

imports region ;

Starting main (){
cümle dizilerini tanımla
timer ayarala
display komutunu ayarla
while(true){
Displaymessage("Unga Bunga !");


}

}
temel olarak algoritma böyle ancak timer kullanacaksanız timertask nesnesini kullanırsanız while(true) döngüsünü kurmanıza gerek kalmaz.
Özgür yazılım....
http://getgnu.org/

Kaanx

Timer kısmını hiç incelememiştim ben orada sıkıntı olucak biraz. ve dediğiniz eğer sonsuz döngüye atarsam sürekli çalısan bir program halini alıcak

mthan

Alıntı yapılan: Kaanx - 29 Ocak 2014 - 02:10:54
Timer kısmını hiç incelememiştim ben orada sıkıntı *olacak biraz. ve dediğiniz eğer sonsuz döngüye atarsam sürekli çalısan bir program halini alıcak
çalıştırdığınız zaman sistem kasılabilir hatta donabilir.Timer kullanımı çokzor değil "java timer sınıfı" olarak ararsanız pek çok basit kullanım örneğini bulabilirsiniz.
Özgür yazılım....
http://getgnu.org/

Kaanx

#9
Bu hafta sonu kodlam işine başlıcam inşallah hocam bu algortima ile


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 30 Ocak 2014 - 03:58:22

http://stackoverflow.com/questions/3240415/how-to-create-a-notification-in-swing buradaki kodu nasıl adapte edebilirim hocam bir iki hata aldım super(true) kısmında


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.*;
import java.util.Date;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;


/**
* Simple demo on how a translucent window
* looks like when is used to display the system clock.
* @author <a href="http://stackoverflow.com/users/20654/oscarryz">Oscar Reyes</a>
*/
public class TranslucencyDemo extends JPanel implements ActionListener {

    private static final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    private final Date now = new Date();
    private final Timer timer = new Timer(1000, this);
    private final JLabel text = new JLabel();

    public TranslucencyDemo() {
        super(true);
        timer.start();
    }


    @Override
    public void actionPerformed(ActionEvent e) {
        now.setTime(System.currentTimeMillis());
        text.setText(String.format("<html><body><font size='50'>%s</font></body></html>",sdf.format(now)));
    }

    public static void main(String[] args) {

        JFrame f = new JFrame();
        setTranslucency( f );
        f.setUndecorated( true );
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setBackground(new Color(0f, 0f, 0f, 1f / 3f));
        f.add(new Translucent());
        f.pack();
        f.setVisible(true);
    }
    // taken from: http://java.sun.com/developer/technicalArticles/GUI/translucent_shaped_windows/
    private static void setTranslucency( Window window){
        try {
               Class<?> awtUtilitiesClass = Class.forName("com.sun.awt.AWTUtilities");
               Method mSetWindowOpacity = awtUtilitiesClass.getMethod("setWindowOpacity", Window.class, float.class);
               mSetWindowOpacity.invoke(null, window, Float.valueOf(0.75f));
            } catch (NoSuchMethodException ex) {
               ex.printStackTrace();
            } catch (SecurityException ex) {
               ex.printStackTrace();
            } catch (ClassNotFoundException ex) {
               ex.printStackTrace();
            } catch (IllegalAccessException ex) {
               ex.printStackTrace();
            } catch (IllegalArgumentException ex) {
               ex.printStackTrace();
            } catch (InvocationTargetException ex) {
               ex.printStackTrace();
            }
    }
}



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 30 Ocak 2014 - 04:45:41

verilen hatalar burada


java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at TranslucencyDemo.setTranslucency(TranslucencyDemo.java:50)
at TranslucencyDemo.main(TranslucencyDemo.java:37)
Caused by: java.awt.IllegalComponentStateException: The frame is decorated
at java.awt.Frame.setOpacity(Frame.java:960)
at java.awt.Window$1.setOpacity(Window.java:4008)
at com.sun.awt.AWTUtilities.setWindowOpacity(AWTUtilities.java:174)
... 6 more



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 30 Ocak 2014 - 04:47:48

Kodun aynısını calıstırdıgımda         f.add(new Translucent()); satırında hata veriyor

eğer eclipse editor ile duzeltirsem o satırı söyle düzeltiyor ve yukarıdaki hataları veriyor

f.add(new TranslucencyDemo());

Kaanx

Merhabalar programla kısmına başladım ilk kutucugu ekran da olustrudum. kodu aşagıda görebilrisiniz


import java.awt.BorderLayout;


public class Deneme2 extends JFrame {

private JPanel contentPane;

/**
* Launch the application.
*/
public static void main(String[] args) {



String message = "Give the Message here ! .";
String header = "Header Name Region";
final JFrame frame = new JFrame();
frame.setSize(300,125);

frame.setUndecorated(true);

Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();// size of the screen
Insets toolHeight = Toolkit.getDefaultToolkit().getScreenInsets(frame.getGraphicsConfiguration());// height of the task bar
frame.setLocation(scrSize.width - frame.getWidth(), scrSize.height - toolHeight.bottom - frame.getHeight());

frame.setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;
JLabel headingLabel = new JLabel(header);
//custom title, custom icon
//JOptionPane.showMessageDialog(frame,
    //"Eggs are not supposed to be green.",
  //  "Inane custom dialog",
  //  JOptionPane.WARNING_MESSAGE);

//ImageIcon headIcon= new ImageIcon("Images/icon1.png");
//headingLabel.setIcon(headIcon);
//headingLabel.setIcon()(IconVi); // --- use image icon you want to be as heading image.
headingLabel.setOpaque(false);
frame.add(headingLabel, constraints);
constraints.gridx++;
constraints.weightx = 0f;
constraints.weighty = 0f;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.NORTH;

JButton cloesButton = new JButton(new AbstractAction("x") {
        @Override
        public void actionPerformed(final ActionEvent e) {
               frame.dispose();
        }
});

frame.add(cloesButton, constraints);
constraints.gridx = 0;
constraints.gridy++;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;
JLabel messageLabel = new JLabel("<HtMl>"+message);
frame.add(messageLabel, constraints);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);

new Thread(){
      @Override
      public void run() {
           try {
                  Thread.sleep(5000); // time after which pop up will be disappeared.
                  frame.dispose();
           } catch (InterruptedException e) {
                  e.printStackTrace();
           }
      };
}.start();




EventQueue.invokeLater(new Runnable() {
public void run() {


try {
Deneme2 frame = new Deneme2();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}



/**
* Create the frame.
*/
//public Deneme2() {
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// setBounds(100, 100, 450, 300);
// contentPane = new JPanel();
// contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
// contentPane.setLayout(new BorderLayout(0, 0));
//setContentPane(contentPane);
// }

}



Şimdi yapmak istediğimse 20 tane cümle dizisi olusturup saat başı bunu o kutucuk ekranına bastırmak basit bir işlem gibi gözüksede ben işin içinden cıkamadım yardımlarınızı bekliyorum arkadaşlar.

Kaanx

#11
Merhabalar olusturdugum stringlerin ekrana gelme süresini timer ile ayarlamak istiyorum fakat adapte edemedim yardımcı olabilecek var mı ? su sitedeki gibi http://stackoverflow.com/questions/5525176/java-simple-timertask-for-each-value-of-array mantık böyle benim hazırladıgım kod ;

KOD:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.text.IconView;


public class Deneme2 extends JFrame {

private JPanel contentPane;

/**
* Launch the application.
*/
public static void main(String[] args) {


String[] message= new String[20];
message[0]="Item1";
message[1]="Item2";
message[2]="Item3";
message[3]="Item4";
message[4]="Item5";
//String message = "Give the Message here ! .";
String header = "Header Name Region";
final JFrame frame = new JFrame();
frame.setSize(300,125);

frame.setUndecorated(true);

Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();// size of the screen
Insets toolHeight = Toolkit.getDefaultToolkit().getScreenInsets(frame.getGraphicsConfiguration());// height of the task bar
frame.setLocation(scrSize.width - frame.getWidth(), scrSize.height - toolHeight.bottom - frame.getHeight());

frame.setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;
JLabel headingLabel = new JLabel(header);
//custom title, custom icon
//JOptionPane.showMessageDialog(frame,
    //"Eggs are not supposed to be green.",
  //  "Inane custom dialog",
  //  JOptionPane.WARNING_MESSAGE);

//ImageIcon headIcon= new ImageIcon("Images/icon1.png");
//headingLabel.setIcon(headIcon);
//headingLabel.setIcon()(IconVi); // --- use image icon you want to be as heading image.
headingLabel.setOpaque(false);
frame.add(headingLabel, constraints);
constraints.gridx++;
constraints.weightx = 0f;
constraints.weighty = 0f;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.NORTH;

JButton cloesButton = new JButton(new AbstractAction("x") {
        @Override
        public void actionPerformed(final ActionEvent e) {
               frame.dispose();
        }
});

frame.add(cloesButton, constraints);
constraints.gridx = 0;
constraints.gridy++;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;


JLabel messageLabel = new JLabel("<HtMl>"+message[1]);
frame.add(messageLabel, constraints);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);

new Thread(){
      @Override
      public void run() {
           try {
                  Thread.sleep(5000); // time after which pop up will be disappeared.
                  frame.dispose();
           } catch (InterruptedException e) {
                  e.printStackTrace();
           }
      };
}.start();




EventQueue.invokeLater(new Runnable() {
public void run() {


try {
Deneme2 frame = new Deneme2();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}



/**
* Create the frame.
*/
//public Deneme2() {
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// setBounds(100, 100, 450, 300);
// contentPane = new JPanel();
// contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
// contentPane.setLayout(new BorderLayout(0, 0));
//setContentPane(contentPane);
// }

}



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 07 Şubat 2014 - 02:05:01

Timer swing eklyerek yaptıgım hali burada arkadaşlar sanırım yöntem bu fakat düzenlemeler istiyor bi el atalım :)

http://stackoverflow.com/questions/7943584/update-jlabel-every-x-seconds-from-arraylistlist-java

import java.awt.BorderLayout;


public class Deneme2 extends JFrame {

private JPanel contentPane;

/**
* Launch the application.
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {


final String[] message= new String[20];
message[0]="Item1";
message[1]="Item2";
message[2]="Item3";
message[3]="Item4";
message[4]="Item5";
int sayıcı= 0;
//String message = "Give the Message here ! .";
String header = "Header Name Region";
final JFrame frame = new JFrame();
frame.setSize(300,125);

frame.setUndecorated(true);

Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();// size of the screen
Insets toolHeight = Toolkit.getDefaultToolkit().getScreenInsets(frame.getGraphicsConfiguration());// height of the task bar
frame.setLocation(scrSize.width - frame.getWidth(), scrSize.height - toolHeight.bottom - frame.getHeight());

frame.setLayout(new GridBagLayout());
final GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;
JLabel headingLabel = new JLabel(header);
//custom title, custom icon
//JOptionPane.showMessageDialog(frame,
    //"Eggs are not supposed to be green.",
  //  "Inane custom dialog",
  //  JOptionPane.WARNING_MESSAGE);

//ImageIcon headIcon= new ImageIcon("Images/icon1.png");
//headingLabel.setIcon(headIcon);
//headingLabel.setIcon()(IconVi); // --- use image icon you want to be as heading image.
headingLabel.setOpaque(false);
frame.add(headingLabel, constraints);
constraints.gridx++;
constraints.weightx = 0f;
constraints.weighty = 0f;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.NORTH;

JButton cloesButton = new JButton(new AbstractAction("x") {
        @Override
        public void actionPerformed(final ActionEvent e) {
               frame.dispose();
        }
});

frame.add(cloesButton, constraints);
constraints.gridx = 0;
constraints.gridy++;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;

        final javax.swing.Timer timer= new javax.swing.Timer(3000,null);
        ActionListener listener = new ActionListener() {
        private int it=message.length;

@Override
public void actionPerformed(ActionEvent e) {
JLabel messageLabel = new JLabel("<HtMl>"+message[2]);
frame.add(messageLabel, constraints);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);


}
};
timer.addActionListener(listener);
timer.start();






new Thread(){
      @Override
      public void run() {
           try {
                  Thread.sleep(5000); // time after which pop up will be disappeared.
                  frame.dispose();
           } catch (InterruptedException e) {
                  e.printStackTrace();
           }
      };
}.start();




EventQueue.invokeLater(new Runnable() {
public void run() {


try {
Deneme2 frame = new Deneme2();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}



/**
* Create the frame.
*/
//public Deneme2() {
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// setBounds(100, 100, 450, 300);
// contentPane = new JPanel();
// contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
// contentPane.setLayout(new BorderLayout(0, 0));
//setContentPane(contentPane);
// }

}


3000 ms saniye bir ekrana getirip kapatması gerekiyor ama kapanmıyor sorunlardan birisi bu ve String[0], String[1],String[2], yazdırmayı yapamadım   


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 07 Şubat 2014 - 02:52:44

aslına bakılırsa suan program düzgün çalısıyor yapmam gereken tanımaladıgım dizileri random olarak her saate thread calıstırıp ekrana basmak işlem basit işin içinden cıkamadım


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 07 Şubat 2014 - 04:58:09

For içine aldıgıdında olmuyor. Ekrana bastıgımda tüm stringler yazılıyor ve sonra kapanıyor. Her ekrana geldiğince 1 cümle yazıp kapanması gerek yardımlarınızı bekliyorum.

sem

Saat başı çalışıp bir iş yapma vs gibi durumlarda Cron'u da alternatif olarak düşünebilirsiniz. Siz uygulamanızı yazarsınız ve kod tamamlanmış olur. Örneğin;

-> Mevcut işlemi kontrol et.
-> Mevcut işlem için gerekli kelimeyi oku
-> Kullanıcıya Göster
-> Sonraki işlemi kaydet. (sonraki çalışma için ilk adıma destek)

Kullanıcı ya da ayarlar ile bunu Cron içerisinde istediğiniz period'a ayarlaysınız. Hem kod ile işleyiş kısmı da otomatik olarak birbirinden ayrılmış olur.

Bence.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

Kaanx

Cron ile ilgili bilgim yok biraz yardımcı olur musunuz ?

sem

Cron Linux tabanlı sistemlerde kullanılan zamanlayıcı uygulamadır ve zamanlama opsiyonları epey geniştir; her pazartesi saat 3 te çalışın, her saat başı, saati 5 geçe vs gibi bir çok değişik şekilde zamanlama ayarlayabilirsiniz.

Ben önerimi sunarkan şunu dikkate alarak sundum; zaten zamanalama konusunda çok yetenekli ve canlı sistemlerde dahi kullanılan güvenilirlikte ve kabiliyette bir uygulama var. Siz kelime gösterimi vs gibi işlemleri kotardıktan sonra, sırtınızı Cron'a yaslayabilirsiniz. Hem geliştirme aşaması da daha kısa sürmüş olur. Çok daha detaylı bilgi için;

http://unixhelp.ed.ac.uk/CGI/man-cgi?crontab+5

sayfasına göz atmakta fayda var... Bu arada zamanlayıcıyı kullanıcı ya da sistem bazında da yönetebiliriyorsunuz. Mantık şu şekilde işliyor; her kullanıcının kendine ait bir cron ayar dosyası var, kullanıcılara özel bu dosya düzenlenerek kullanıcı bazında zamanlama da sağlanabiliyor ya da root ile sistem bazında yani kullanıcı gözetmeksizin işlem yapabiliyorsunuz.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

Kaanx

#15
Yardımınız için cok teşekkür ederim peki ben kendi koduma bunu nasıl adapte edebilrim ?


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 08 Şubat 2014 - 17:31:17

cron4j indirip projeme ekledim fakat örnekleri incelediğimde ilk örnek benim işimi görücek gibi duruyor ve söyle bir örnek verilmiş

main.java
/*
* cron4j - A pure Java cron-like scheduler
*
* Copyright (C) 2007-2010 Carlo Pelliccia (www.sauronsoftware.it)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version
* 2.1, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License 2.1 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License version 2.1 along with this program.
* If not, see <http://www.gnu.org/licenses/>.
*/
import it.sauronsoftware.cron4j.Scheduler;

public class Main {

public static void main(String[] args) {
// Prepares the task.
MyTask task = new MyTask();
// Creates the scheduler.
Scheduler scheduler = new Scheduler();
// Schedules the task, once every minute.
scheduler.schedule("* * * * *", task);
// Starts the scheduler.
scheduler.start();
// Stays alive for five minutes.
try {
Thread.sleep(5L * 60L * 1000L);
} catch (InterruptedException e) {
;
}
// Stops the scheduler.
scheduler.stop();
}

}


mytask.java

/*
* cron4j - A pure Java cron-like scheduler
*
* Copyright (C) 2007-2010 Carlo Pelliccia (www.sauronsoftware.it)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version
* 2.1, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License 2.1 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License version 2.1 along with this program.
* If not, see <http://www.gnu.org/licenses/>.
*/
import java.util.Date;

/**
* This is the simplest task form: a class implementing the {@link Runnable}
* interface.
*/
public class MyTask implements Runnable {

public void run() {
System.out.println("Current system time: " + new Date());
System.out.println("Another minute ticked away...");
}

}



Olrak işleme tabi tutulmus fakat ben tek bir main dosyası içinde çalıstım TASK kısmını anlayamadım ?  benim proje kodum bu Jpanel olusturarak sizde eclipse üzerinde calıstırabilirsniz.

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;


public class deneme3 extends JPanel {
private JPanel contentPane;
public static void main(String[] args) throws InterruptedException {


final String[] message= new String[20];
message[0]="Item1";
message[1]="Item2";
message[2]="Item3";
message[3]="Item4";
message[4]="Item5";
//final ScheduledExecutorService s = Executors.newSingleThreadScheduledExecutor();
//s.scheduleAtFixedRate(new Thread, secondsToFirstOccurence, 60*60, TimeUnit.SECONDS);
//String message = "Give the Message here ! .";
String header = "Header Name Region";
final JFrame frame = new JFrame();
frame.setSize(300,125);

frame.setUndecorated(true);

Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();// size of the screen
Insets toolHeight = Toolkit.getDefaultToolkit().getScreenInsets(frame.getGraphicsConfiguration());// height of the task bar
frame.setLocation(scrSize.width - frame.getWidth(), scrSize.height - toolHeight.bottom - frame.getHeight());

frame.setLayout(new GridBagLayout());
final GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;
JLabel headingLabel = new JLabel(header);
//custom title, custom icon
//JOptionPane.showMessageDialog(frame,
    //"Eggs are not supposed to be green.",
  //  "Inane custom dialog",
  //  JOptionPane.WARNING_MESSAGE);

//ImageIcon headIcon= new ImageIcon("Images/icon1.png");
//headingLabel.setIcon(headIcon);
//headingLabel.setIcon()(IconVi); // --- use image icon you want to be as heading image.
headingLabel.setOpaque(false);
frame.add(headingLabel, constraints);
constraints.gridx++;
constraints.weightx = 0f;
constraints.weighty = 0f;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.NORTH;

JButton cloesButton = new JButton(new AbstractAction("x") {
        @Override
        public void actionPerformed(final ActionEvent e) {
               frame.dispose();
        }
});

frame.add(cloesButton, constraints);
constraints.gridx = 0;
constraints.gridy++;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;



       // final javax.swing.Timer timer= new javax.swing.Timer(3000,null);
        //ActionListener listener = new ActionListener() {
        // private int it=message.length;

// @Override
//public void actionPerformed(ActionEvent e) {
JLabel messageLabel = new JLabel("<HtMl>"+message[2]);
frame.add(messageLabel, constraints);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);


//}
//};
// timer.addActionListener(listener);
// timer.start();






new Thread(){
      @Override
      public void run() {
           try {
                  Thread.sleep(5000); // time after which pop up will be disappeared.
                  frame.dispose();
           } catch (InterruptedException e) {
                  e.printStackTrace();
           }
      };
}.start();
}
public deneme3() {

}

}


Cron4j mantıgını anlatan ilk örneğe göre kendi kodumu nasıl düzenlerim. ?



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 08 Şubat 2014 - 22:26:48

Cron4J ile dakikada bir bildirim cıkarmaya başladım ama sorun surada
1.dakika="1.cümle"
2.dakika="2.cümle"
3.dakika="3.cümle"
.
.
.
20.dakika="20.cümle" yazdırmak isityorum basit bir array çağırma yöntemi aslında dakikaya göre saydırıp cümleyi kutucağa cagırıcam. Son adımlar yardım lütfen

Son hali kodun

import it.sauronsoftware.cron4j.Scheduler;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.util.Date;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

import sun.awt.windows.ThemeReader;


public class deneme3 extends JPanel {
private JPanel contentPane;
public static void main(String[] args) throws InterruptedException {


final String[] message= new String[20];
message[0]="Item1";
message[1]="Item2";
message[2]="Item3";
message[3]="Item4";
message[4]="Item5";




//String message = "Give the Message here ! .";
String header = "Header Name Region";
final JFrame frame = new JFrame();
frame.setSize(300,125);

frame.setUndecorated(true);

Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();// size of the screen
Insets toolHeight = Toolkit.getDefaultToolkit().getScreenInsets(frame.getGraphicsConfiguration());// height of the task bar
frame.setLocation(scrSize.width - frame.getWidth(), scrSize.height - toolHeight.bottom - frame.getHeight());

frame.setLayout(new GridBagLayout());
final GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;
JLabel headingLabel = new JLabel(header);
//custom title, custom icon
//JOptionPane.showMessageDialog(frame,
    //"Eggs are not supposed to be green.",
  //  "Inane custom dialog",
  //  JOptionPane.WARNING_MESSAGE);

//ImageIcon headIcon= new ImageIcon("Images/icon1.png");
//headingLabel.setIcon(headIcon);
//headingLabel.setIcon()(IconVi); // --- use image icon you want to be as heading image.
headingLabel.setOpaque(false);
frame.add(headingLabel, constraints);
constraints.gridx++;
constraints.weightx = 0f;
constraints.weighty = 0f;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.NORTH;

JButton cloesButton = new JButton(new AbstractAction("x") {
        @Override
        public void actionPerformed(final ActionEvent e) {
               frame.dispose();
        }
});

frame.add(cloesButton, constraints);
constraints.gridx = 0;
constraints.gridy++;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;

Scheduler s= new Scheduler();
s.schedule("* * * * * ",new Runnable() {

@Override
public void run() {
JLabel messageLabel = new JLabel("<HtMl>"+message[2]);
frame.add(messageLabel, constraints);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
System.out.println("Başlama zamanı: "+ new Date());
}
});
s.start();

try {
Thread.sleep(600000);
frame.dispose();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
s.stop();







/*
new Thread(){
      @Override
      public void run() {
           try {
                  Thread.sleep(5000); // time after which pop up will be disappeared.
                  frame.dispose();
           } catch (InterruptedException e) {
                  e.printStackTrace();
           }
      };
}.start();*/
}
public deneme3() {

}

}

heartsmagic

Yalnız, söylendiği gibi Cron kullanırsan Linux'a bağımlı kalman gerekecek.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Kaanx

Cron dışında bir zamanlama olusturamadım ki hocam windows üzerindede çalışması grek bu kodların ?? nasıl bişi yapmam lazım

heartsmagic

İki üç günde uygulama yazmak sanırım biraz daha tecrübe istiyordur :)
Cron haricinde bir yola bakacaksın, biraz daha deneyeceksin, biraz daha öneri bekleyeceksin.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Kaanx

Hocam Timer kullanmam gerekiyor fakat bunu en kısa yoldan böyle çözebildim malesef sizin bilginiz var mı yardımcı olabilir msiniz bu konuda ?

mthan

Alıntı yapılan: Kaanx - 09 Şubat 2014 - 01:01:22
Hocam Timer kullanmam gerekiyor fakat bunu en kısa yoldan böyle çözebildim malesef sizin bilginiz var mı yardımcı olabilir msiniz bu konuda ?
Modüler programlama yapıyorsanız öncelikle zamanlı çalışacak nesneyi oluşturmak için
class ZamanliCalisanNesne extends TimerTask {

    public void run() {

       KOMUTLAR;

    }
}

kalıbını kullanın daha sonra ana programda

Timer Zamanlayici = new Timer();
ZamanliCalisanNesne TureyenNesne = new ZamanliCalisanNesne();
Zamanlayici.schedule(TureyenNesne, N, M);
bu komutlarla timertask sınıfından olan türeyen nesneyi
N ml saniye sonra çalışmaya başlatır ve M milisaniyede tekrar çalıştırır.
Özgür yazılım....
http://getgnu.org/

Kaanx

Hocam dün gece bende bunun farkında vardım biraz olayı düzeneldim vaktiniz varsa bakabilir msiniz  _??

KOD:

import it.sauronsoftware.cron4j.Scheduler;


public class Deneme1 extends JPanel {
private JPanel contentPane;
public static void main(String[] args) throws InterruptedException {


final String[] message= new String[20];
message[0]="Item1";
message[1]="Item2";
message[2]="Item3";
message[3]="Item4";
message[4]="Item5";




//String message = "Give the Message here ! .";
String header = "Header Name Region";
final JFrame frame = new JFrame();
frame.setSize(300,125);

frame.setUndecorated(true);

Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();// size of the screen
Insets toolHeight = Toolkit.getDefaultToolkit().getScreenInsets(frame.getGraphicsConfiguration());// height of the task bar
frame.setLocation(scrSize.width - frame.getWidth(), scrSize.height - toolHeight.bottom - frame.getHeight());

frame.setLayout(new GridBagLayout());
final GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;
JLabel headingLabel = new JLabel(header);
//custom title, custom icon
//JOptionPane.showMessageDialog(frame,
    //"Eggs are not supposed to be green.",
  //  "Inane custom dialog",
  //  JOptionPane.WARNING_MESSAGE);

//ImageIcon headIcon= new ImageIcon("Images/icon1.png");
//headingLabel.setIcon(headIcon);
//headingLabel.setIcon()(IconVi); // --- use image icon you want to be as heading image.
headingLabel.setOpaque(false);
frame.add(headingLabel, constraints);
constraints.gridx++;
constraints.weightx = 0f;
constraints.weighty = 0f;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.NORTH;

JButton cloesButton = new JButton(new AbstractAction("x") {
        @Override
        public void actionPerformed(final ActionEvent e) {
               frame.dispose();
        }
});

frame.add(cloesButton, constraints);
constraints.gridx = 0;
constraints.gridy++;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;



/*Scheduler s= new Scheduler();
s.schedule("* * * * *",new Runnable() {

@Override
public void run() {
JLabel messageLabel = new JLabel("<HtMl>"+message[2]);
frame.add(messageLabel, constraints);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
System.out.println("Reminder Başlama zamanı: "+ new Date());
}
});
s.start();

try {
while(true){
System.out.println("UygulamaBaşlama zamanı: "+ new Date());
Thread.sleep(600000);
frame.dispose();
}

} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
s.stop();*/
TimerTask timertask = new TimerTask() {

@Override
public void run() {
// TODO Auto-generated method stub

JLabel messageLabel = new JLabel("<HtMl>"+message[2]);
frame.add(messageLabel, constraints);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);

}
};
Timer timer = new Timer();
timer.schedule(timertask,0, 6*100000);





//Thread iptal edildi timer var diye ?

/*new Thread(){
      @Override
      public void run() {
           try {while(true){
           new CrunchifyTimerTaskExample();
           Thread.sleep(5000); // time after which pop up will be disappeared.
                  frame.dispose();
           }
                 
           } catch (InterruptedException e) {
                  e.printStackTrace();
           }
      };
}.start();*/
}
public Deneme1() {

}

}

mthan

#22
Alıntı yapılan: Kaanx - 09 Şubat 2014 - 12:40:55
Hocam dün gece bende bunun farkında vardım biraz olayı düzeneldim vaktiniz varsa bakabilir msiniz  _??

KOD:

import it.sauronsoftware.cron4j.Scheduler;


public class Deneme1 extends JPanel {
private JPanel contentPane;
public static void main(String[] args) throws InterruptedException {


final String[] message= new String[20];
message[0]="Item1";
message[1]="Item2";
message[2]="Item3";
message[3]="Item4";
message[4]="Item5";




//String message = "Give the Message here ! .";
String header = "Header Name Region";
final JFrame frame = new JFrame();
frame.setSize(300,125);

frame.setUndecorated(true);

Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();// size of the screen
Insets toolHeight = Toolkit.getDefaultToolkit().getScreenInsets(frame.getGraphicsConfiguration());// height of the task bar
frame.setLocation(scrSize.width - frame.getWidth(), scrSize.height - toolHeight.bottom - frame.getHeight());

frame.setLayout(new GridBagLayout());
final GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;
JLabel headingLabel = new JLabel(header);
//custom title, custom icon
//JOptionPane.showMessageDialog(frame,
    //"Eggs are not supposed to be green.",
  //  "Inane custom dialog",
  //  JOptionPane.WARNING_MESSAGE);

//ImageIcon headIcon= new ImageIcon("Images/icon1.png");
//headingLabel.setIcon(headIcon);
//headingLabel.setIcon()(IconVi); // --- use image icon you want to be as heading image.
headingLabel.setOpaque(false);
frame.add(headingLabel, constraints);
constraints.gridx++;
constraints.weightx = 0f;
constraints.weighty = 0f;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.NORTH;

JButton cloesButton = new JButton(new AbstractAction("x") {
        @Override
        public void actionPerformed(final ActionEvent e) {
               frame.dispose();
        }
});

frame.add(cloesButton, constraints);
constraints.gridx = 0;
constraints.gridy++;
constraints.weightx = 1.0f;
constraints.weighty = 1.0f;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.fill = GridBagConstraints.BOTH;



/*Scheduler s= new Scheduler();
s.schedule("* * * * *",new Runnable() {

@Override
public void run() {
JLabel messageLabel = new JLabel("<HtMl>"+message[2]);
frame.add(messageLabel, constraints);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
System.out.println("Reminder Başlama zamanı: "+ new Date());
}
});
s.start();

try {
while(true){
System.out.println("UygulamaBaşlama zamanı: "+ new Date());
Thread.sleep(600000);
frame.dispose();
}

} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
s.stop();*/
TimerTask timertask = new TimerTask() {

@Override
public void run() {
// TODO Auto-generated method stub

JLabel messageLabel = new JLabel("<HtMl>"+message[2]);
frame.add(messageLabel, constraints);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);

}
};
Timer timer = new Timer();
timer.schedule(timertask,0, 6*100000);





//Thread iptal edildi timer var diye ?

/*new Thread(){
      @Override
      public void run() {
           try {while(true){
           new CrunchifyTimerTaskExample();
           Thread.sleep(5000); // time after which pop up will be disappeared.
                  frame.dispose();
           }
                 
           } catch (InterruptedException e) {
                  e.printStackTrace();
           }
      };
}.start();*/
}
public Deneme1() {

}

}


iki versiyonda olmuş bence  ;) sleep kullanımı programın çalışmayacağı süreyi ayarlar timer da hangi aralıklarla çalışacağını ayarlar.Teorik olarak aynı hesaba geliyor.Ama ben pek while(true) biçiminde ifadeler kullanmayı sevmiyorum.Sleep için böyle yapıtnız sanırım.Çalışıyorsa problem yok.
Özgür yazılım....
http://getgnu.org/

Kaanx

Hocam timer kısmı halloldu diyoruz o zaman şidmi en önemli kısım kaldı ;

Yukarıda da acıkladım 25 tane string dizi belilicem ve her bildirim paneli acıldıgında farklı cümle gelice bunu nasıl yapabilirim ?

Yada sırayla söyle

zaman        ekrana gelicek olan yazı
1.dakika=       "1.cümle"
2.dakika=       "2.cümle"
3.dakika=       "3.cümle"
.
.
.
20.dakika="20.cümle"

mthan

#24
Alıntı yapılan: Kaanx - 09 Şubat 2014 - 13:28:08
Hocam timer kısmı halloldu diyoruz o zaman şidmi en önemli kısım kaldı ;

Yukarıda da acıkladım 25 tane string dizi belilicem ve her bildirim paneli acıldıgında farklı cümle gelice bunu nasıl yapabilirim ?

Yada sırayla söyle

zaman        ekrana gelicek olan yazı
1.dakika=       "1.cümle"
2.dakika=       "2.cümle"
3.dakika=       "3.cümle"
.
.
.
20.dakika="20.cümle"
Sorunuzu tam anlayamadım ki tam olarak ne isteniyor.Her saatin belirli dakikasında belirli bir cümle gün boyu tekrar ederek mi çalışacak?
Bayrak değer vererek çözebiliriz ama sanırım A(i) ="i.cümle"
biçiminde bir dizi oluşturun
ana programın başında i=0 atayın.timertask tanımladığınız komutların son satırına i=i+1 ekleyin istediğiniz biçimde çalışacaktır
Özgür yazılım....
http://getgnu.org/