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

كيف احرك icon من bottone الى bottone اخر ؟

مغلق
بدأه ra7l في 3 أبريل 2007 · 4 رد · 671 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته ..

أخواني الاعزاء .. كيف حالكم ان شالله بخير .

شباب انا عملت برنامج بسيط وهو عباره عن مجموعه من bottonne وكل bottonne فيه icon وعملت ايضا bottonne اخر فيه مجموعه من الاوامر .

السؤال هو اذا قمت بالظغط على bottonne البداية اريد ان تتحرك icon من bottonne [14 مثلا وتدور على بقيه bottonne الاخرى باستخدام اعتقد thread

ارجو مساعدتي في الميثود المناسبه ولكم مني جزيل الشكر ..

وهذا ههو الكود لكي تتضح الرؤية .. للجميع

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


public class MoveCar4 extends JFrame implements ActionListener 

{
	JPanel screen, area , controlroom ;
	JButton[] street , keybord;
	String s[] = {"Start","Stop","Fast","Slow" ,"Rest","Check"};
	String img[] = {"images/UpRight.jpg","images/RightDown.jpg","images/Vert.jpg","images/DownRight.jpg","images/Horiz.jpg",
	"images/TrainDown.jpg","images/RightUp.jpg"};
	String notrack[] = {"images/NoTrack.jpg"};

	ImageIcon icon;
	JLabel labelInfo;
	Color  colors[] =
	{Color.red , Color.blue ,Color.green ,Color.yellow ,
			Color.white , Color.lightGray };

	public MoveCar4 ()
	{
	   screen = new JPanel(new GridLayout(1,1));
	   Font f =new Font ("Sanserif",Font.BOLD,18);
	   labelInfo = new JLabel("WELCOM" ,JLabel.CENTER);
	   labelInfo.setFont(f);

	   	for (int i =0; i<6; i++ )

   	  screen.setBackground(Color.red);
	   screen.add(labelInfo);
	   getContentPane().add(BorderLayout.NORTH,screen );

		street = new JButton[25];
		area = new JPanel (new GridLayout(5,5));


		for (int i=0; i<25; i++ )

		{
			if (i== 0 )
			{


				icon = new ImageIcon(img[0]);
				street = new JButton("", icon);
			}

			else if(i== 1 )
			{
				icon = new ImageIcon(img[1]);
				street = new JButton("", icon);
			}

			else if(i== 5 )
			{
				icon = new ImageIcon(img[2]);
				street = new JButton("", icon);
			}

			else if(i== 6 )
			{
				icon = new ImageIcon(img[3]);
				street = new JButton("", icon);
			}
			else if(i== 7 )
			{
				icon = new ImageIcon(img[4]);
				street = new JButton("", icon);
			}
			else if(i== 8 )
			{
				icon = new ImageIcon(img[1]);
				street = new JButton("", icon);
			}

			else if(i== 10 )
			{
				icon = new ImageIcon(img[2]);
				street = new JButton("", icon);
			}
			else if(i== 13 )
			{
				icon = new ImageIcon(img[5]);
				street = new JButton("", icon);
			}
			else if(i== 15 )
			{
				icon = new ImageIcon(img[2]);
				street = new JButton("", icon);
			}
			else if(i== 16 )
			{
				icon = new ImageIcon(img[0]);
				street = new JButton("", icon);
			}
			else if(i== 17 )
			{
				icon = new ImageIcon(img[4]);
				street = new JButton("", icon);
			}
			else if(i== 18 )
			{
				icon = new ImageIcon(img[6]);
				street = new JButton("", icon);
			}

			else if(i== 20 )
			{
				icon = new ImageIcon(img[3]);
				street = new JButton("", icon);
			}
			else if(i== 21 )
			{
				icon = new ImageIcon(img[6]);
				street = new JButton("", icon);
			}

			else 
			icon = new ImageIcon(notrack[0]);
			street= new JButton("",icon);


			street.addActionListener(this);
			area.add(street);

		}

		getContentPane().add(BorderLayout.CENTER,area );

		keybord = new JButton[6];
		controlroom = new JPanel	(new GridLayout(3,3));	 

		for (int i=0; i <6; i++)
		{
			keybord = new JButton(s);
			keybord.addActionListener(this);
			controlroom.add(keybord);

		}

		getContentPane().add(BorderLayout.SOUTH,controlroom );

	}

	public void actionPerformed(ActionEvent e)
	  {

		for (int i=0; i<25; i++ )
		{
		  if (e.getSource() == street )
		  {
		   System.out.println(i+" ");
		  }

		  else if (i<6)
		  {
		  if(e.getSource() == keybord )
		 labelInfo.setText(s);
		  }

		}

	 }

}

import java.awt.event.*;

public class TestMoveCar4

   {



	 public static void main(String[] args)

	  {
	  MoveCar4 c= new MoveCar4 ();
		c.setTitle("Car");
		c.setSize(421,550);
		c.setVisible(true);
		c.addWindowListener (
		new WindowAdapter ()
	 {
	 public void 
	windowClosing(WindowEvent e )
	 { System.exit(0); }
	 } );


	 }

}

والصور في المرفقات لكي تتضح الرؤيه للجميع

تحياتي لكم ومشكورين مقدما

images.rar

#2

معقوله مافي فكره ؟ :rolleyes:

#3

up up

#4

عملت على تحريك الصور كما طلبت و هذا هو الكود و عليك ترتيب الصور في array الذي وضعت

كما تريده و قد قمت بوضع sleep لإبطاء السرعة في التحريك و لكن الصور خلال التحريك غير مرتبة

و تراها في ما أضفت:

MoveCar.zip

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#5

شكرا جزيلا لك اخي Final Heaven

على هذه الاضافة فقد أستفدت منها، فلم يسبق و ان استخدمت Thread

وشكرا لصاحب الموضع على هذه اللعبة الجميله

اما ماقمت به فهو استخدام الطريقة startMotion التي اضافها الاخ Final ، و قمت بترتيب الكود .

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


public class MoveCar4 extends JFrame{

	static boolean START=false;
	static int SLEEP = 1000;
	static int INDEX_START=0;
	JPanel screen, area , controlroom;
	JButton[] street , keybord;
	String s[] = {"Start","Stop","Fast","Slow" ,"Rest","Check"};

	ImageIcon images[] =new ImageIcon[] {
					new ImageIcon("images/UpRight.jpg"),
					new ImageIcon("images/RightDown.jpg"),
					new ImageIcon("images/NoTrack.jpg"),//null,
					new ImageIcon("images/NoTrack.jpg"),//null,
					new ImageIcon("images/NoTrack.jpg"),//null,

					new ImageIcon("images/Vert.jpg"),
					new ImageIcon("images/DownRight.jpg"),
					new ImageIcon("images/Horiz.jpg"),
					new ImageIcon("images/RightDown.jpg"),
					new ImageIcon("images/NoTrack.jpg"),//null,

					new ImageIcon("images/Vert.jpg"),
					new ImageIcon("images/NoTrack.jpg"),//null,
					new ImageIcon("images/NoTrack.jpg"),//null,
					new ImageIcon("images/Vert.jpg"),
					new ImageIcon("images/NoTrack.jpg"),//null,

					new ImageIcon("images/Vert.jpg"),
					new ImageIcon("images/UpRight.jpg"),
					new ImageIcon("images/Horiz.jpg"),
					new ImageIcon("images/RightUp.jpg"),
					new ImageIcon("images/NoTrack.jpg"),//null,


					new ImageIcon("images/DownRight.jpg"),
					new ImageIcon("images/RightUp.jpg"),
					new ImageIcon("images/NoTrack.jpg"),//null,
					new ImageIcon("images/NoTrack.jpg"),//null,
					new ImageIcon("images/NoTrack.jpg")//null
	};


//	TrainDown TrainLeft TrainRight TrainUp
	ImageIcon[]imagesTrain=new ImageIcon[]{
		new ImageIcon("images/TrainDown.jpg"),
		new ImageIcon("images/TrainDown.jpg"),
		new ImageIcon("images/TrainLeft.jpg"),
		new ImageIcon("images/TrainLeft.jpg"),
		new ImageIcon("images/TrainDown.jpg"),
		new ImageIcon("images/TrainLeft.jpg"),
		new ImageIcon("images/TrainUp.jpg"),
		new ImageIcon("images/TrainUp.jpg"),
		new ImageIcon("images/TrainUp.jpg"),
		new ImageIcon("images/TrainUp.jpg"),
		new ImageIcon("images/TrainRight.jpg"),
		new ImageIcon("images/TrainDown.jpg"),
		new ImageIcon("images/TrainRight.jpg"),
		new ImageIcon("images/TrainRight.jpg")
	};

	int[]line={13, 18,17,16,21,20,15,10,5,0,1,6,7,8};

	ImageIcon icon;

	JLabel labelInfo;


	public MoveCar4 () {
	   screen = new JPanel(new GridLayout(1,1));
	   Font f =new Font ("Sanserif",Font.BOLD,18);
	   labelInfo = new JLabel("WELCOM" ,JLabel.CENTER);
	   labelInfo.setFont(f);

	   screen.setBackground(Color.red);
	   screen.add(labelInfo);
	   getContentPane().add(BorderLayout.NORTH,screen );

		street = new JButton[images.length];
		area = new JPanel (new GridLayout(5,5));

		for(int i=0;i<images.length;i++){
			street = new JButton("", images);
			area.add(street);
		}  
		getContentPane().add(BorderLayout.CENTER,area );	
		keybord = new JButton[6];
		controlroom = new JPanel	(new GridLayout(3,3));	 

		for (int i=0; i <6; i++)
		{
			keybord = new JButton(s);
			keybord.addActionListener(getAction(s));
			controlroom.add(keybord);

		}	   
		getContentPane().add(BorderLayout.SOUTH,controlroom );
	}

	private ActionListener getAction(String nameAction){
		if(nameAction.equalsIgnoreCase("Start")){
			return new ActionListener(){
				public void actionPerformed(ActionEvent e){
					try{
						labelInfo.setText(s[0]);
						keybord[0].setEnabled(START);
						START = true;	
						startMotion();
					}catch(Exception ex){
						ex.printStackTrace();
					}	
				}
			};
		}
		if(nameAction.equalsIgnoreCase("Stop")){
			return new ActionListener(){
				public void actionPerformed(ActionEvent e){
					try{
						labelInfo.setText(s[1]);
						keybord[0].setEnabled(START);
						START=false;
					}catch(Exception ex){
						ex.printStackTrace();
					}	
				}
			};
		}
		if(nameAction.equalsIgnoreCase("Fast")){
			return new ActionListener(){
				public void actionPerformed(ActionEvent e){
					try{
						labelInfo.setText(s[2]);
						SLEEP=500;
					}catch(Exception ex){
						ex.printStackTrace();
					}	
				}
			};
		}
		if(nameAction.equalsIgnoreCase("Slow")){
			return new ActionListener(){
				public void actionPerformed(ActionEvent e){
					try{
						labelInfo.setText(s[3]);
						SLEEP=5000;
					}catch(Exception ex){
						ex.printStackTrace();
					}	
				}
			};
		}

		return null;
	} 


 /**
 * 	@author Final Heaven
 */
	public void startMotion() {
		Thread	t	= new Thread(new Runnable() {
			public void run() {
				for(int i=INDEX_START; START; i++){						
					street[line[(i%14)]].setIcon(imagesTrain[(i%14)]);						
					try{
						Thread.currentThread().sleep(SLEEP);
					}
					catch(Exception ee){
						ee.printStackTrace();
					}
					INDEX_START=i;
					if(START)street[line[(i%14)]].setIcon(images[line[(i%14)]]);
				}
			}
		});
		t.start();
	}

	public static void main(String[]args){
		MoveCar4 c= new MoveCar4 ();
		c.setTitle("Car");
		c.setSize(421,550);
		c.setVisible(true);
		c.addWindowListener (
		new WindowAdapter (){
	 		public void windowClosing(WindowEvent e ){
	 			 System.exit(0); 
	 		}
		});
	}
}

هل احسن برمجة الألعاب !

هذا الموضوع مغلق.

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