الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكل action

بدأه SoUfiaNoXx في 25 سبتمبر 2011 · 4 رد · 638 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عملت برنامج وهمي " لتضليل أخي " المهم :

int s= (int)(Math.random()*4);
        if(s==0)
        	label.setText("System.dtt");
        if(s==1)
        	label.setText("Fichier.dtt");
        if(s==2)
        	label.setText("Dfdfd.dtt");
        if(s==3)
        	label.setText("IUGHGh.dtt");
       if(s==4)
 label.setText("System.dtt");

أريد ان اضع هده الحالات كل الثانية

فكرت في ان استعمل mouseMoved ولكن يجب على ماوس تحرك داخل واجهة البرنامج

ممكن طريقة الأفضل لجعل هده الإحتمالات حتى ولو تتحرك الماوس داخل واجهة برنامج او طريقة الأخرى؟؟

تم تعديل هذه المشاركة بواسطة SoUfiaNoXx في 25 سبتمبر 2011 في 05:12

#2

تقصد بأنك تريد مراقبة المتغير s وعندما يتغير يقوم البرنامج بتغيير نص الـ label بشكل مستمر؟ إذا كان كذلك يمكنك استخدام SwingWorker

597657.png
#3

استخدم الـ Swing Timer

بس اول مره اسمع ان لغه البرمجه بيتلعب بيها ROFL.gif

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 25 سبتمبر 2011 في 11:14

Software Developer
Mahmoudkelany.com


 

#4
Eng.Fouad كتب:

تقصد بأنك تريد مراقبة المتغير s وعندما يتغير يقوم البرنامج بتغيير نص الـ label بشكل مستمر؟ إذا كان كذلك يمكنك استخدام SwingWorker

ممكن أخي كيفية استخدام SwingWorker

و ماهو عملها بالضبط

#5
SoUfiaNoXx كتب:

ممكن أخي كيفية استخدام SwingWorker

و ماهو عملها بالضبط

تقوم بعمل thread خاص بالـ swing

عملت لك مثال بسيط، يقوم بتوليد أرقام عشوائية من نوع int وتتراوح قيمتها ما بين 0 و 100:

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
import javax.swing.Timer;


public class Main extends JFrame 
{
	private int s = 0;
	private JLabel label;
	private Executor executor = Executors.newCachedThreadPool();
	private Timer timer;
    private int delay = 1000; // every 1 second

	public Main()
	{
		super("أرقام عشوائية");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(300, 65);
		label = new JLabel("" + s);
		setLayout(new FlowLayout());
		getContentPane().add(label, "Center");
		prepareStartShedule();
		setVisible(true);
	}
	public static void main(String[] args)
	{
		SwingUtilities.invokeLater(new Runnable()
		{
			@Override
			public void run()
			{
				new Main();
			}
		});
	}

	private void prepareStartShedule()
    {
        timer = new javax.swing.Timer(delay, startCycle());
        timer.start();
    }

	private Action startCycle()
    {
        return new AbstractAction()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                executor.execute(new MyTask());
            }
        };
    }

    private class MyTask extends SwingWorker<Void, Void>
    {
        @Override
        protected Void doInBackground() throws Exception
        {
        	doTasksInBackground();
            return null;
        }

    }

    private void doTasksInBackground()
    {
    	generateRandomS();
    	label.setText("" + s);
    }

    private void generateRandomS()
    {
    	s = (int)(Math.random() * 101);
    	System.out.println(s); // to see it through the console
    }

}

تم تعديل هذه المشاركة بواسطة Eng.Fouad في 26 سبتمبر 2011 في 01:18

597657.png

مواضيع مشابهة