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

How limit the resizable option in Jframe?

بدأه Mahmoud Kelany في 20 مايو 2010 · 28 رد · 1,570 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

سوال بسيط ان شاء الله

ولكن لا اعلم لماذا لا يعمل لدى

انا اريد ان اضع حد معين لتكبير وتصغير الـ Frame

وهناك فالـ netbean حقل يدعى maximumSize

وعندما قمت بتغيرر القيم للطول والعرض

قام بارجاع القيم الافتراضيه

وانا اريد ان لا يتم تعديل شكل الاطار عن مثلا 2000 فالطول 2000 فالعرض

ولكن لا استيطع

هل من مساعده فى ذلك ؟

وشكرا مقدما

تحياتى

Software Developer
Mahmoudkelany.com


 

#2

هل جربت

setResizable(false);

لا بد من صنعاء وان طال السفر

#3

انا لا اريد هذه

انا اريد اعطى المستخدم امكانيه تعديل الطول والعرض لحد معين وليس الغاء الخاصيه نهائيا

وشكرا على الرد

Software Developer
Mahmoudkelany.com


 

#4
Eng.Hamzawy كتب:

انا لا اريد هذه

انا اريد اعطى المستخدم امكانيه تعديل الطول والعرض لحد معين وليس الغاء الخاصيه نهائيا

وشكرا على الرد

امممم

اتوقع اذا اردت تحديد الحد الأقصى والأدنى لتغيير حجم الاطار عن طريق السحب بالفأرة فعليك ان تعمل Listener

ComponentListener

وتقوم بتعديل كود الث

componentResized

بحيث تقوم بالفحص اذا ما وصل حجم الاطار الى حد الحجم المسموح به فتمنع الحجم من التغيرحينئذ

أما الاعتماد على مثد setMinimum و setMaximum فلا أظنه يفي بالغرض

بالتوفيق

لا بد من صنعاء وان طال السفر

#5
اقتباس
أما الاعتماد على مثد setMinimum و setMaximum فلا أظنه يفي بالغرض

هل يوجد Methods للـ JFrame تدعى setMinimum و setMaximum ؟!

لا أظن ذلك ...

يمكنك القيام بذلك عبر استخدام setMaximizedBounds ، مثلاً:

this.setMaximizedBounds(new Rectangle(600,400));
#6

أخي كل شيء بالعربي

لا مشاكل لو لم تستطع ترجمة كلمة معينة ضعها بالإنجليزي

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#7
اقتباس

هل يوجد Methods للـ JFrame تدعى setMinimum و setMaximum ؟!

لا أظن ذلك ...

يمكنك القيام بذلك عبر استخدام setMaximizedBounds ، مثلاً:

this.setMaximizedBounds(new Rectangle(600,400));

متشكر ساحاول

وافيدكم باللى حصل

سلام عليكم

تم تعديل هذه المشاركة بواسطة Eng.Hamzawy في 20 مايو 2010 في 18:00

Software Developer
Mahmoudkelany.com


 

#8
اقتباس
أخي كل شيء بالعربي

لا مشاكل لو لم تستطع ترجمة كلمة معينة ضعها بالإنجليزي

تحياتي

هل انا عملت غير كدا يا بشمهندس علاء؟

يا ريت لو فيه حاجه تبلغنى كى لا يتم فعلها مره اخرى

Software Developer
Mahmoudkelany.com


 

#9

للاسف الطريقه اللى حضرتك عرضتها

مش بتشتغل ؟

this.setMaximizedBounds(new Rectangle(600,400));

يا ريت حضرتك تشوف ولو امكن مثال صغير

وجزاكم الله خيرا

سلام علكيم

Software Developer
Mahmoudkelany.com


 

#10

أخي حتى العنوان :)

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#11
اقتباس
أخي حتى العنوان

تحياتي

اظن ان قصدك على انه بالانجليزى

بصراحه انا فكرت كتير ولم اجد ترجمه له فوضعته هكذا

عذراا

Software Developer
Mahmoudkelany.com


 

#12

أظن التعليمة بسيطة جداً ولا تحتاج إلى مثال !

هذا مثال بسيط على كل حال:

import java.awt.Dimension;
import java.awt.Rectangle;
import javax.swing.JFrame;

public class MaximizedBoundsJFrame extends JFrame {

    public MaximizedBoundsJFrame() {
        this.setSize(new Dimension(400, 300));
        this.setMaximizedBounds(new Rectangle(600, 400));
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String args[]) {
        new MaximizedBoundsJFrame().setVisible(true);
    }
}

تم تعديل هذه المشاركة بواسطة Speed_Of_Light في 20 مايو 2010 في 20:32

#13
اقتباس
أظن التعليمة بسيطة جداً ولا تحتاج إلى مثال !

ولكن المثال اللى حضرتك وضعته لم يؤدى المطلوب

حضرتك لاحظ السهم الموجود فالصوره

87034513.jpg

انا لا اريد التحكم فالطول والعرض من خلال هذه الاسهم

او التحكم وعدم الخروج عن العرض والطول المحددين سابقا فالكود

انما انا لم الاحظ وجهه نظر حضرتك

فانا بالفعل عملت زى ما حضرتك قولت قبل ما حضرتك تضع الشفره

ولكن انا لم اضغط على زر التكبير

ولكن استخدمت الاسهم لذلك رديت وقولت ان الكود لا يعمل

فانا اريد الغاء التحكم فالطول والعرض من جوانب الاطار كما هو موضح بالصوره

1 −1

Software Developer
Mahmoudkelany.com


 

#14

تكلم بالفصحى بالله عليك ... أنا لا أكاد أفهم شيئاً !

الكود السابق يعطيك إمكانية إعادة التحجيم إلى حد معين لا يمكنك تجاوزه.

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

أما إن كنت تريد منع المستخدم من تعديل الحجم (لا عن طريق زرالتكبيرولا عن طريق حواف النافذة) فاستخدم التعليمة التي ذكرها san3aniJava من قبل:

this.setResizable(false);

ولا تستخدم "حضرتك" مرة أخرى ... لا أحب ذلك

#15

انا افهم ما ذكرتموه ولكن هذا ليس ما اريد

اقتباس

ولا تستخدم "حضرتك" مرة أخرى ... لا أحب ذلك

متاسف على ذلك

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

انا اريد ان اعطى المستخدم الصلاحيه فى تعديل الحجم باستخدام الاسهم اللتى اذا وقفت الى اقصى الاطار سوف تجدها

وهيا ثلاث حالات موضحه فالصوره

فانا اريد عندما يريد المستخدم تخطى الحجم المحدد فالكود

فانه لا يستطيع

اتمنى يكون الكلام مفهوم

وجزاك الله خيرا يا اخى

واسف على الازعاج

سلام عليكم

Software Developer
Mahmoudkelany.com


 

#16

ما ادري و ش الكود الي انت تبحث عنه ،

ولكن في الكود التالي يتم انشاء فورمين الاولي لايمكنك تغيير حجم بالماوس اطلاقا، فالتغيير يكون بواسطة الزر الموجود بالزاوية العلوية فقط.

والفورم الثاني يمكنك تغيير الحجم بالماوس علما بانك ليمكن ان تقوم بالتصغير اقل من 400

	public static void main(String[] args)
	  {
	    createFrame1();
	    createFrame2();
	  }

    public static void createFrame1(){
    	JFrame frame=new JFrame();
        frame.setSize(500, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setMinimumSize(new Dimension(400, 400));
        frame.setMaximumSize(new Dimension(600, 600));
        frame.setVisible(true);
    }

    public static void createFrame2(){
    	JFrame.setDefaultLookAndFeelDecorated(true);
    	JFrame frame=new JFrame();
        frame.setSize(500, 500);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.getRootPane().removeMouseMotionListener(frame.getRootPane().getMouseMotionListeners()[0]);
        frame.getRootPane().removeMouseListener(frame.getRootPane().getMouseListeners()[0]);
    }

تم تعديل هذه المشاركة بواسطة العيافـي في 21 مايو 2010 في 02:43

#17

السلام عليكم

جزاك الله خيرا على المساعده يا اخ العيافى

ولكن عندما شغلت الكود

ظهر لى Exception

وهذا هو

java.lang.ArrayIndexOutOfBoundsException: 0

فى السطر التالى من الكود

frame.getRootPane().removeMouseMotionListener(frame.getRootPane().getMouseMotionListeners()[0]);//removes drag resize capability

وعندما لغيت تشغيل الاطار الثانى وجربت الاطار الاول بمفرده

الداله

frame.setMinimumSize(new Dimension(400, 400));

تعمل جيدا

ولكن الداله

frame.setMaximumSize(new Dimension(600, 600));

تسمح لى بالتعديل والتجاوز عن 600 و 600

فاين الخطأ اذن ؟

انا اسف هتعبك معايا شويه فى فتره التعلم فقط

وجزاك الله كل خير

وشكراا

سلام عليكم

Software Developer
Mahmoudkelany.com


 

#18

لا حاجة إلى المتنصتات Listeners !

اقتباس
فانا اريد عندما يريد المستخدم تخطى الحجم المحدد فالكود

فانه لا يستطيع

اتمنى يكون الكلام مفهوم

قلت لك أن هذا الكود يقوم بذلك! :

import java.awt.Dimension;
import java.awt.Rectangle;
import javax.swing.JFrame;

public class MaximizedBoundsJFrame extends JFrame {

    public MaximizedBoundsJFrame() {
        this.setSize(new Dimension(400, 300));
        this.setMaximizedBounds(new Rectangle(600, 400));
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String args[]) {
        new MaximizedBoundsJFrame().setVisible(true);
    }
}

يمكنك أن تلاحظ أن حجم الـ JFrame هو 400*300 ويمكنك تكبيره إلى أن بحيث لا يتجاوز 600*400

ألا يعمل عندك بشكل صحيح ؟

تم تعديل هذه المشاركة بواسطة Speed_Of_Light في 21 مايو 2010 في 14:31

#19
اقتباس
يمكنك أن تلاحظ أن حجم الـ JFrame هو 400*300 ويمكنك تكبيره إلى أن بحيث لا يتجاوز 600*400

ألا يعمل عندك بشكل صحيح ؟

انا افهم جيدا ما تقول

ولكن الاطار يتم تعديله الى اكثر من الحجم المحدد

فما العمل اذن ؟

نعم لا يعمل لدى بشكل صحيح

Software Developer
Mahmoudkelany.com


 

#20

غريب ! يعمل عندي بشكل صحيح !

حمل ملف المشروع لأرى ما المشكلة

#21

هذا ما قومت بكتابته

import java.awt.Dimension;
import javax.swing.JFrame;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Mahmoud Mahrous
 */
public class testFrame_2 {

    public static void main(String [] args){
        JFrame jFrame = new JFrame("Test Frame");
        jFrame.setMaximumSize(new Dimension(600, 500));
        jFrame.setMinimumSize(new Dimension(200, 200));
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.setVisible(true);
    }
}

و قد التقطت فيديو مدته 21 ثانيه اثناء تشغيل البرنامج

حضرتك ممكن تتطلع عليه وترى ماذا يحدث

وشكرا لحضرتك جدا

واتمنى نجد حل لذلك

رابط الفيديو

وشكراا

سلام عليكم

Software Developer
Mahmoudkelany.com


 

#22

ركز معي

الكود في مشاركتك هو :

        jFrame.setMaximumSize(new Dimension(600, 500));
        jFrame.setMinimumSize(new Dimension(200, 200));

وهو خاطئ

والكود في مشاركتي هو :

this.setMaximizedBounds(new Rectangle(600, 400));
#23
Speed_Of_Light كتب:

ركز معي

الكود في مشاركتك هو :

        jFrame.setMaximumSize(new Dimension(600, 500));
        jFrame.setMinimumSize(new Dimension(200, 200));

وهو خاطئ

والكود في مشاركتي هو :

this.setMaximizedBounds(new Rectangle(600, 400));

انا اسف جدا اتلخبطت بين كودك وكود الاخ العيافى

ولكن ايضا لم يعمل :mad: :mad:

الاسهم تمكنى من زياده حجم الاطار عن الحجم المحدد له

ولكن عند الضغط على زر التكبير يتم تكبير الاطار بالحجم المحدد له

ولكن التكبير باستخدام الاسهم يسمح بتكبير الاطار عن الحجم المحدد له

فما المشكله اذن ؟ :wacko: :wacko:

اريد الغاء التعديل باستخدام الاسهم الجانبيه للاطار ان لم يوجد حل لذلك

معلش اتعبتك معى يا اخى العزيز

ربنا يجزيك عنا كل خير

Software Developer
Mahmoudkelany.com


 

#24

أخي المهندس حمزاوي

اخبرتك بالحل في مشاركتي السابقة لكنك تجاهلته أو ربما لم تنتبه له

على العموم جرب الكود التالي وقل لي هل هذا ما تريده

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;

import javax.swing.JFrame;

public class Frametest extends JFrame implements ComponentListener {

	private static int MAX_H=400;
	private static int MAX_W=300;
	private static int MIN_H=100;
	private static int MIN_W=100;
	private boolean resize= false;
	public Frametest() {
		this.setSize(new Dimension(100, 100));
		this.addComponentListener(this);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public static void main(String args[]) {
		new Frametest().setVisible(true);
	}

	public void componentHidden(ComponentEvent e) {
		// TODO Auto-generated method stub

	}

	public void componentMoved(ComponentEvent e) {
		// TODO Auto-generated method stub

	}

	public void componentResized(ComponentEvent e) 
	{
		// TODO Auto-generated method stub
		int w = this.getWidth();
		int h = this.getHeight();
		resize=false;
		if(h>Frametest.MAX_H)
		{
			h=Frametest.MAX_H;
			resize=true;
		}
		else if(h<Frametest.MIN_H)
		{
			h=Frametest.MIN_H;
			resize=true;
		}
		if(w>Frametest.MAX_W)
		{
			w=Frametest.MAX_W;
			resize=true;
		}
		else if(w<Frametest.MIN_W)
		{
			w=Frametest.MIN_W;
			resize=true;
		}
		if(resize)
			this.setSize(new Dimension(w, h));


	}

	public void componentShown(ComponentEvent e) {
		// TODO Auto-generated method stub

	}
}
1

لا بد من صنعاء وان طال السفر

#25

البرنامج يعمل معي بشكل صحيح على لينكس

ربما هي مشكلة خاصة بويندوز

إذاً عليك بكود الأخ san3aniJava فهو يقوم بما تريد

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