السلام عليكــم ورحمـة الله وبركاتــه
هل من الممكن ان اعرض صور متحركة
على jframe?
السلام عليكــم ورحمـة الله وبركاتــه
هل من الممكن ان اعرض صور متحركة
على jframe?
هل جربتي عرض صور عادية؟
حاولي أن تبحثي قليلاً
ثم أخبريني عن النتائج
تحياتي
تم تعديل هذه المشاركة بواسطة علاء الصالحي في 11 نوفمبر 2008 في 13:31 — السبب: خطأ إملائي
لا اتا لا اقصد صور عادية اعرف انو الصور العادية تنضاف ك
label
ثم استخدام
setIcon() method
حيث تنعرض بشكل عادي على الفريم..
انا اقصد انو بناء على اكشن معين على JTextArea
اروح ابحث عن صور معينة من الداتا بيس واذا وجدتها تطلع لي على الفريم واحدة ثم الاخرى ثم الثالثة وهكذا..
اتمنى انو الصورة تكون وضحت
استخدمي المؤقتات لهذه العملية
راجعي المواضيع المثبتة في القسم
بالمناسبة أختي أتمنى لو تحاولي
أن تستخدمي لهجة فصحى
أعرف أنكم في السعودية أهل الفصحى
لكني أقصد ما يفهمه الجميع
ونقطة أخرى أي كلمات غير عربية تكتب بلغتها ولا تهاون في الموضوع
لا أحل أن أرى كلمات مثل أكشن داتبيس وغيره
أعتذر لك إن أحسستي بأن في كلامي تجريح
تحياتي
جربت أني أضيف Icon للـJLabel لكن ماعرفت من وين أضيفله الـURL!!
ممكن تقولوا لي كيف بشكل كود إذا ممكن
وشكراً
السلام عليكم...
هذ الكود يلبي الطلب
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Color;
class PhotoT extends JFrame
{
private String names[] ={//13
"cars/bmw1.gif", "cars/bmw2.gif", "cars/bmw3.gif",
"cars/cad1.gif", "cars/cad2.gif", "cars/cad3.gif",
"cars/dodge1.gif", "cars/dodge2.gif", "cars/dodge3.gif",
"cars/ferrari1.gif", "cars/ferrari2.gif", "cars/ferrari3.gif","cars/porsche1.gif" };
private Icon img[] = {
new ImageIcon( getClass().getResource( names[ 0 ] ) ),
new ImageIcon( getClass().getResource( names[ 1 ] ) ),
new ImageIcon( getClass().getResource( names[ 2 ] ) ),
new ImageIcon( getClass().getResource( names[ 3 ] ) ),
new ImageIcon( getClass().getResource( names[ 4 ] ) ),
new ImageIcon( getClass().getResource( names[ 5 ] ) ),
new ImageIcon( getClass().getResource( names[ 6 ] ) ),
new ImageIcon( getClass().getResource( names[ 7 ] ) ),
new ImageIcon( getClass().getResource( names[ 8 ] ) ),
new ImageIcon( getClass().getResource( names[ 9 ] ) ),
new ImageIcon( getClass().getResource( names[ 10 ] ) ),
new ImageIcon( getClass().getResource( names[ 11 ] ) ),
new ImageIcon( getClass().getResource( names[ 12 ] ) ) };
private JLabel lab;
private JLabel labs;
private JButton n;
private JButton p;
private JPanel panel;
int i=0;
public PhotoT()
{
n = new JButton("next");
p = new JButton("previous");
panel= new JPanel(null);
lab= new JLabel(img);
lab.setBounds(170,40,img.getIconWidth(),img.getIconHeight());
labs = new JLabel();
labs.setText("1");
labs.setBounds(410,436,40,40);
n.setBounds(300,440,90,30);
p.setBounds(440,440,90,30);
n.addActionListener(new Handler());
p.addActionListener(new Handler());
panel.add(lab);
panel.add(n);
panel.add(p);
panel.add(labs);
panel.setBackground(Color.WHITE);
add(panel);
this.setLocation(10,10);
this.setSize(850,550);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Car..");
this.setVisible(true);
}
private class Handler implements ActionListener // anonymous inner class
{
public void actionPerformed( ActionEvent event )
{
if(event.getSource()==n)
{
i++;
if(i<img.length)
{
lab.setIcon(img);
labs.setText(String.valueOf(i+1));
}
else
{
i=0;
lab.setIcon(img);
labs.setText(String.valueOf(i+1));
}
}
else if(event.getSource()==p)
{
i--;
if(i>0)
{
lab.setIcon(img);
labs.setText(String.valueOf(i+1));
}
else
{
i=(img.length-1);
lab.setIcon(img);
labs.setText(String.valueOf(i+1));
}
}
} // end method actionPerformed
} // end anonymous inner class
}
public class PhotoTest {
public static void main(String[] args) {
new PhotoT();
}
}البرنامج عبارة عن معرض للمجموعة من الصور يتم استدعائها من مجلد" cars/" موجود مع نفس ملفات البرنامج classes ,بواسطة Array من نوع Icon او من نوع ImageIcon.
الصور يتم عرضهم عن طريق JLabel,مع وجود زر next و زر previous وكلاهما يقوم بعرض الصورة التالية او السابقة وهكذا.
"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"
ملاحظة مهمة:
اذ كنت تتعامل مع database ,ماعليك سوا جلب الصور او اسماء الصور من db و وضعها في array ومن ثم عرضها في JLbel كما في الكود السابق.
او جلبها مباشرة من db من دون array وعرضها في JLabel.
"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"
اما اذ كنتم تريدون استخدام مجموعة صور متحركة من نوع GIF مع Timer
فهذ المثال يوفي الغرض
// Animation of a series of images.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.Timer;
class LogoAnimatorT extends JFrame
{
JLabel lab = new JLabel();
JPanel pan = new JPanel(null);
private final static String IMAGE_NAME = "vv36.gif"; // base image name
protected ImageIcon images[]; // array of images
private final int TOTAL_IMAGES = 37; // number of images
private int currentImage = 0; // current image index
private final int ANIMATION_DELAY = 80; // millisecond delay
private int width; // image width
private int height; // image height
private Timer animationTimer; // Timer drives animation
public LogoAnimatorT()
{
images = new ImageIcon[ TOTAL_IMAGES ];
// load 30 images
for ( int count = 0; count < images.length; count++ )
images[ count ] = new ImageIcon( getClass().getResource(
"images/" + IMAGE_NAME + count + ".gif" ) );
width = images[ 0 ].getIconWidth(); // get icon width
height = images[ 0 ].getIconHeight(); // get icon height
lab.setIcon(images[ currentImage ]);
lab.setBounds(0,0,width,height);
pan.add(lab);
add(pan);
}
// start animation, or restart if window is redisplayed
public void startAnimation()
{
if ( animationTimer == null )
{
currentImage = 0; // display first image
// create timer
animationTimer =
new Timer( ANIMATION_DELAY, new TimerHandler() );
animationTimer.start(); // start timer
} // end if
else // animationTimer already exists, restart animation
{
if ( ! animationTimer.isRunning() )
animationTimer.restart();
} // end else
} // end method startAnimation
// stop animation timer
public void stopAnimation()
{
animationTimer.stop();
} // end method stopAnimation
// inner class to handle action events from Timer
private class TimerHandler implements ActionListener
{
// respond to Timer's event
public void actionPerformed( ActionEvent actionEvent )
{
lab.setIcon(images[ currentImage ]);
currentImage = ( currentImage + 1 ) % TOTAL_IMAGES;
} // end method actionPerformed
} // end class TimerHandler
} // end class
public class LogoAnimator
{
// execute animation in a JFrame
public static void main( String args[] )
{
LogoAnimatorT animation = new LogoAnimatorT();
animation.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
animation.setSize(244,225); // make window just large enough for its GUI
animation.setVisible( true ); // display window
animation.startAnimation(); // begin animation
} // end main
} // end class LogoAnimatorفي هذ المتال يتم عرض مجموعة من صور gif عددها 37 ,مع استخدم Timer,بحيث يتم عرضهم على التوالي لعرض هيئة صورة واحدة متحركة
واليكم مجلد "images/" بداخله الصور مع المرفقات..
مع ملاحظة ارفاق المجلد مع ملفات البرنامج Classes ,حتى يكون المصار صحيحا..
"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"
أشكرك أخي العزيز جداً جداً وجزاك الله ألف خير ويكفيني إهتمامك هذا يخليني أحس كإنك علمتني الجافا من الـ0 إلى الإحتراف :) حتى وإن كان شئ بسيط
وللأسف زر الشكر ألغوه ولا كنت بضغطه بقووووه
مشكور مره ثانيه وإن شاء الله نخدمك في الأفراح
في أمان الله :bye: