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

اختيار صورة عشوائية من مجلد به مجموعة صور

بدأه mr.beshoy في 31 أغسطس 2011 · 4 رد · 881 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدىَّ Folder به 6 ملفات " صور ".

ما أريده هو أن أضع على Jlabel صورة عشوائية من ال 6 ملفات .

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

import java.awt.Dimension;
import java.io.File;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class RandomImageTest extends JFrame {

    private JPanel panel = null;
    private JLabel label = null;
    private File[] files;
    private File f;
    private ImageIcon imageIcon = null;

    public RandomImageTest() {
        f = new File("C:\\Documents and Settings\\a\\Desktop\\RandomImage\\src\\images");
        panel = new JPanel();
        File ff = selectRandomFile(f);
        imageIcon = new ImageIcon(ff.getName());
        label = new JLabel();
        label.setIcon((Icon) imageIcon);
        panel.add(label);
        getContentPane().add(panel);
        ////////////////////////////////////////////
        System.out.println(ff.getName());
    }

    public static void main(String[] args) {
        RandomImageTest randomImageTest = new RandomImageTest();
        randomImageTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        randomImageTest.setLocationRelativeTo(null);
        randomImageTest.setSize(new Dimension(600, 300));
        randomImageTest.setVisible(true);
    }

    private File selectRandomFile(File f) {
        files = f.listFiles();
        return files[(int) Math.random() * files.length];
    }
}

المشكلة الأولى : ستجدون الدالة selectRandomFile تقوم بإرجاع ملف بطريقة عشوائية >>>> لكن المشكلة إنها كل مرة ترجع الملف " 4.png " لماذا ؟؟؟!!!!

المشكلة الثانية :

   File ff = selectRandomFile(f);
        imageIcon = new ImageIcon(ff.getName());

فى الشفيرة السابقة : السطر الأول استقبل الملف الشعوائى فى ال ff ثم استعمله فى ال imageIcon ثم أضع ال imageIcon على ال Lebel من خلال :

label.setIcon((Icon) imageIcon);

و لكن الصورة لا تظهر .. لماذا ؟!!

ال code مرفق و ال مجلد src ستجدون به المجلد Imags به الصور المستعملة .

شكراً

RandomImage.rar

تم تعديل هذه المشاركة بواسطة mr.beshoy في 31 أغسطس 2011 في 18:17

#2
اقتباس
المشكلة الأولى : ستجدون الدالة selectRandomFile تقوم بإرجاع ملف بطريقة عشوائية >>>> لكن المشكلة إنها كل مرة ترجع الملف " 4.png " لماذا ؟؟؟!!!!

بسبب إستخدام Math.random() لذلك قمت بإستبدالها و إستخدام الكلاس Random

و لكن الصورة لا تظهر .. لماذا ؟!!

بسبب الدالة

getContentPane().add(panel);

في الواقع أنا ﻻ أعلم ماذا تفعل هذه الدالة ولماذا هي ﻻ تعمل معك , كل ما فعلت إني أغيت هذه الدالة و أضفت :

add(panel);

وهذا الكود كامل :

import java.awt.Dimension;
import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class RandomImageTest extends JFrame {

    private JPanel panel = null;
    private JLabel label = null;
    private File[] files = null;
    private File f = null;
    private ImageIcon imageIcon = null;
    private Random random = null;
    public RandomImageTest()  {
        try {
            URI uri= getClass().getResource("/images/").toURI();

             f = new File(uri);
             panel = new JPanel();
             File ff = selectRandomFile(f);
            System.out.println( ff.getPath());
             imageIcon = new ImageIcon(ff.getPath());
             label = new JLabel();
             label.setIcon((Icon) imageIcon);
             panel.add(label);
             //getContentPane().add(panel);
             add(panel);
             ////////////////////////////////////////////
             System.out.println(ff.getName());
        } catch (URISyntaxException ex) {
            Logger.getLogger(RandomImageTest.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static void main(String[] args) {
        RandomImageTest randomImageTest = new RandomImageTest();
        randomImageTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        randomImageTest.setLocationRelativeTo(null);
        randomImageTest.setSize(new Dimension(600, 300));
        randomImageTest.setVisible(true);
    }

    private File selectRandomFile(File f) {
        files = f.listFiles();
      random = new Random();
      int x = random.nextInt(files.length);
       System.out.println(x);
        return files[x];
    }
}
1

للصداقة البرمجية

pro-vb6@hotmail.com

#3

حقاً كانت المشكلة بسبب إنى مستعمل Math.Random

الكود السليم :

import java.awt.Dimension;
import java.io.File;
import java.util.Random;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class RandomImageTest extends JFrame {

    private JPanel panel = null;
    private JLabel label = null;
    private File[] files;
    private File f;
    private ImageIcon imageIcon = null;
    private Random random;

    public RandomImageTest() {
        f = new File("C:\\Documents and Settings\\a\\Desktop\\RandomImage\\src\\images");
        panel = new JPanel();
        random = new Random();
        File ff = selectRandomFile(f);
        System.out.println("name" + " " + ff.getName());
        imageIcon = new ImageIcon(ff.getPath());
        label = new JLabel();
        label.setIcon((Icon) imageIcon);
        panel.add(label);
        getContentPane().add(panel);
    }

    public static void main(String[] args) {
        RandomImageTest randomImageTest = new RandomImageTest();
        randomImageTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        randomImageTest.setLocationRelativeTo(null);
        randomImageTest.setSize(new Dimension(600, 300));
        randomImageTest.setVisible(true);
    }

    private File selectRandomFile(File f) {
        files = f.listFiles();
        return files[(int) random.nextInt(files.length)];
    }
}

اقتباس

المشكلة الثانية :

expand plain text

File ff = selectRandomFile(f);

imageIcon = new ImageIcon(ff.getName());

فى الشفيرة السابقة

 File ff = selectRandomFile(f);
        imageIcon = new ImageIcon(ff.getName());

: السطر الأول استقبل الملف الشعوائى فى ال ff ثم استعمله فى ال imageIcon ثم أضع ال imageIcon على ال Lebel من خلال :

expand plain text

label.setIcon((Icon) imageIcon);

و لكن الصورة لا تظهر .. لماذا ؟!!

و ذللك بسبب استعمال الدالة getName() يجب استعمال getPath()

-----------------------------------------------

و لكن هناك طريقة أخرى غير استعمال ال Files و هى عمل مصفوفة من نوع imageIcon تحتوى على الصور ثم نعرض منها الصور بطريقة عشوائية :

import java.awt.Dimension;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class RandomImageTest extends JFrame {

    private JPanel panel = null;
    private JLabel label = null;
    private ImageIcon[] myImageIcons = new ImageIcon[6];
    private Random random;

    public RandomImageTest() {
        panel = new JPanel();
        random = new Random();
        label = new JLabel();
        ////////////////////////////////////////////
        myImageIcons[0] = new ImageIcon(getClass().getResource("images/1.gif"));
        myImageIcons[1] = new ImageIcon(getClass().getResource("images/2.gif"));
        myImageIcons[2] = new ImageIcon(getClass().getResource("images/3.png"));
        myImageIcons[3] = new ImageIcon(getClass().getResource("images/4.png"));
        myImageIcons[4] = new ImageIcon(getClass().getResource("images/5.png"));
        myImageIcons[5] = new ImageIcon(getClass().getResource("images/6.png"));
        //////////////////////////////////////////////////////////////////////
        int index = (random.nextInt(6));
        System.out.println(index);
        label.setIcon(myImageIcons[index]);
        /////////////////////////////////////////////////
        panel.add(label);
        getContentPane().add(panel);

    }

    public static void main(String[] args) {
        RandomImageTest randomImageTest = new RandomImageTest();
        randomImageTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        randomImageTest.setLocationRelativeTo(null);
        randomImageTest.setSize(new Dimension(600, 300));
        randomImageTest.setVisible(true);
    }
}
--------------------------------------------------------
 وشكراً لأستاذنا أبو فهد على  تعبك معنا و كل عام و انت بخير
#4

إذا كنت تفكر بعمل لعبة Tetris

فأعتقد أن هذا الرابط سوف يفيدك كثيرا

لعبة Tetris

للصداقة البرمجية

pro-vb6@hotmail.com

#5

شكراً ، هستعين بيه بس هحاول أعتمد على تفكير أكثر .

شكراً لك

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…