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

اظهار الصورة

بدأه nourkhan في 29 يوليو 2011 · 5 رد · 547 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اخوتي الكرام.

اريد اضافة form حتى اتمكن من اضهار الصورة المحملة من listener التالي:

public class GamePropertiesPane extends JPanel
{

	static final PuzzleCutter [] cutters = {new ClassicCutter()};

	static final Color HELP_COLOR = new Color (100,100,150);


    //creation de la fenetre des proprietes du jeu
    public GamePropertiesPane()
    {
    	super(new BorderLayout());
    	initGUI();
    	addWiring();
    	fireCutterChanged();
    	imageField.setText (getCurrentPath());
    	imageField.selectAll();
    }

    private void initGUI()
    {

    	imageField = new JTextField();
    	browseButton = new JButton ("Ouvrir...");
    	browseButton.setMnemonic ('O');

		JPanel imageTopPane = new JPanel(new BorderLayout());
		imageTopPane.add (imageField,   BorderLayout.CENTER);
		imageTopPane.add (browseButton, BorderLayout.EAST);
		JPanel imagePane = new JPanel(new BorderLayout());
		imagePane.setBorder (createTitledBorder ("Image"));
		imagePane.add (imageTopPane, BorderLayout.NORTH);



		cutterCBox = new JComboBox(cutters);

		JPanel cutterPane = new JPanel (new BorderLayout());
		cutterPane.add (cutterCBox,      BorderLayout.NORTH);

		cutterPane.setBorder (createTitledBorder ("Style de coupe"));


		//creation d'un panel pour choisir le nombre de piece
                //2-2000 pieces min et max, 50 ici par defaut
		SpinnerNumberModel spinModel = new SpinnerNumberModel(50, 2, 2000, 1);
		pieceSpinner = new JSpinner(spinModel);

		JPanel piecePane = new JPanel (new BorderLayout());
		piecePane.add (pieceSpinner, BorderLayout.NORTH);
		piecePane.setBorder (createTitledBorder ("Nombre de pièces"));


                //mettre le nombre de piece et la methode de coupe dans un seul panel
		JPanel settingsPane = new JPanel (new GridLayout(1,2, 5,5));
		settingsPane.add (cutterPane);
		settingsPane.add (piecePane);





		this.add (imagePane,    BorderLayout.NORTH);
		this.add (settingsPane, BorderLayout.CENTER);

	}



    public static Border createTitledBorder (String title)
    {
    	Border outer = BorderFactory.createTitledBorder (BorderFactory.createEtchedBorder(), title);
    	Border inner = BorderFactory.createEmptyBorder (2,5,5,5);
    	return BorderFactory.createCompoundBorder (outer, inner);
    }

    private void addWiring()
    {
    	browseButton.addActionListener(new ActionListener() {
    		public void actionPerformed (ActionEvent e)
    		{ fireBrowseAction(); } 
    	});

    	cutterCBox.addActionListener(new ActionListener() {
    		public void actionPerformed (ActionEvent e)
    		{ fireCutterChanged(); } 
    	});
    }


    private JTextField   imageField;
    private JButton      browseButton;
    private JComboBox    cutterCBox;
    private JSpinner     pieceSpinner;



    //les proprietés changé par l'utilisateur
    private Image image;
    private PuzzleCutter cutter;


    public Image getImage() { return image; }
    public PuzzleCutter getCutter() { return cutter; }




    protected void fireBrowseAction()
    {
    	System.out.println("Dossier courant = " + getCurrentFolder());
    	JFileChooser chooser = new JFileChooser(getCurrentFolder());
    	chooser.setFileSelectionMode (JFileChooser.FILES_AND_DIRECTORIES);
    	int choose = chooser.showOpenDialog(this);
    	if (choose == JFileChooser.APPROVE_OPTION)
    	{
    		imageField.setText (chooser.getSelectedFile().getAbsolutePath());
    	}
    }

    protected void fireCutterChanged()
    {
    	PuzzleCutter cutter = (PuzzleCutter) cutterCBox.getSelectedItem();

    	pieceSpinner.setEnabled (cutter instanceof VariableCountCutter);
    }


    public void setUpPuzzleProperties() throws GamePropertiesException
    {
    	// charger l'image
    	File file = new File (imageField.getText());
    	if (!file.exists()) throw new GamePropertiesException("Fichier introuvable.");


    	image = Toolkit.getDefaultToolkit().getImage (file.getAbsolutePath());

        //selection de la methode de decoupe
    	cutter = (PuzzleCutter) cutterCBox.getSelectedItem();
    	if (cutter instanceof VariableCountCutter) {
    		VariableCountCutter varCutter = (VariableCountCutter) cutter;
    		int count = ((Number) pieceSpinner.getValue()).intValue();
    		varCutter.setPreferredPieceCount (count);
    	}
    }


    private String getCurrentPath()
    {
    	File folder = getCurrentFolder();
    	try {                    
    		return folder.getCanonicalPath(); 
    	} catch (IOException ex) { 
    		return folder.getAbsolutePath(); 
    	}
    }


    private File getCurrentFolder()
    {
    	String text = imageField.getText().trim();
    	if (text.length() == 0) text = ".";
    	return new File (text);
    }
}

فكيف يمكنني ذلك حفضكم الله.

#2

هل من الممكن ايضاح السوال اكثر

لان الكود غير كامل

ينقصه

PuzzleCutter

VariableCountCutter

GamePropertiesException

ClassicCutter

او تضع الكود كاملا وتذكر ماذا تريد منه

Software Developer
Mahmoudkelany.com


 

#3
Mahmoud Kelany كتب:

هل من الممكن ايضاح السوال اكثر

لان الكود غير كامل

ينقصه

PuzzleCutter

VariableCountCutter

GamePropertiesException

ClassicCutter

او تضع الكود كاملا وتذكر ماذا تريد منه

البرنامج عبارة عن لعبة لتقطيع الصورة، والصورة المراد تقطيعها هي نفسها الموجودة في المتغير image وانا اريد عند النقر على (اضهار) ان يتم اضهار الصورة الموجودة في المتغير image للمستعمل ودلك في form جديد.

شكرا جزيلا.

nourkhan كتب:

البرنامج عبارة عن لعبة لتقطيع الصورة، والصورة المراد تقطيعها هي نفسها الموجودة في المتغير image وانا اريد عند النقر على (اضهار) ان يتم اضهار الصورة الموجودة في المتغير image للمستعمل ودلك في form جديد.

شكرا جزيلا.

IG.rar

#4

بسيطة جدا

قم بعمل مربع حوارى JDialog واصنع داخله JPanel واجعله يستقبل صورة ك parameter فى المنشئ constructor

وفى الحدث componentShown يقوم ال panel برسم الصورة


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#5

هل ممكن اخي الكريم ان تضيف ما قلته لي في البرنامج المرفق لانني مبتدئ في البرمجة ولاأعرف كيف يمكن ذلك. شكرا جزيلا لك.

#6

معذرة اخى فانا مشغول جدا ولا املك الوقت

على كل ستجد من يساعدك

بالتوفيق


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

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