سؤال

أنا عالق في كيفية تغيير حجم الزر الثالث ليصبح بنفس الحجم مثل الآخرين ووضعه في القاع.

class ControlFrame extends JFrame 
    implements Runnable
{
    JButton jb_inc = new JButton();
    JButton jb_zero = new JButton();
    JButton jb_dec = new JButton();

    ControlFrame() {
        super("Control Frame");
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    ControlFrame(int x,int y, int w, int h) {
        this();
        this.setBounds(x, y, w, h);
        this.setVisible(true);

        jb_inc.setBounds(10,10,90,20);
        jb_zero.setBounds(10,40,90,20);
        jb_dec.setBounds(10,60,90,20);

        jb_inc.setVisible(true);
        jb_zero.setVisible(true);
        jb_dec.setVisible(true);

        this.getContentPane().add(jb_inc);
        this.getContentPane().add(jb_zero);
        this.getContentPane().add(jb_dec);

    }

    public void run() {
    }
}

public class Counting_Machine 
{
    public static void main(String[] args) {
        ControlFrame cf = new ControlFrame(0,200,80,150);
    }
}
هل كانت مفيدة؟

المحلول

اقتراحان:

1) ضع الأشياء الشائعة في كتلة تهيئة المثيل. أنا شخصياً أرتجف كلما رأيت دعوة إلى "هذا ()".

{this.setDefaultCloseOperation (windowConstants.exit_on_close) ؛ }

ControlFrame () {Super ("Control Frame") ؛ }

ControlFrame (int x ، int y ، int w ، int h) {super ("control frame") ؛ ...}

2) أود أن أتخلص من مُنشئ X و Y و W و H ... شخصياً لدي فئة تسمى WindowUtils التي تحتوي على طريقة "موضع" تكتشف حجم الشاشة ثم تستخدم القيم التي تم تمريرها لإنشاء نافذة هذا هو الحجم النسبي للشاشة. ثم الكود الذي ينشئ النافذة يستدعي ذلك. أفضل أن يكون لدي عدد قليل من المُنشئين (في كثير من الأحيان يكون ذلك صفرًا أو واحد ، بالكاد يكون لدي اثنين أو أكثر).

3) this.getContentPane (). add (jb_inc) ؛ يمكن الآن كتابتها على أنها إضافة (jb_inc) ؛ - منذ JDK 1.5 أعتقد.

4) لا تتصل أبدًا بالأساليب القابلة للتجال (كل الأشياء التي لديك هذا. من قبل) داخل المنشئ. إذا كانت الفئة الفرعية قد تجاوزت "إضافة" ، فيمكنك رؤية الأشياء تنهار. حتى تتمكن من الاتصال super.add () ، أو القيام بالإضافة بطريقة أخرى ، أو جعل الفصل النهائي الخاص بك.

لا اجابة لسؤالك... :-)

تحتاج إلى الاستفادة من لاعبين للحصول على ما تريد.

اعتمادًا على ما تريده ، ربما تريد استخدام BorderLayout حتى تتمكن من الحصول على الزر في الأسفل.

نصائح أخرى

أقترح عليك أن تبدأ من خلال قراءة القسم من البرنامج التعليمي المتأرجح باستخدام مديري التخطيطلن يعمل الرمز الخاص بك لأنك تحاول إضافة 3 مكونات إلى "مركز" الحدود التي لن تعمل. اختر جهاز تخفيف من الأفضل تلبي احتياجاتك.

ليست هناك حاجة لاستخدام طريقة setBounds (...) عند استخدام مدير تخطيط. مهمة مدير التخطيط هي في وضع المكونات بناءً على قواعد مدير التخطيط. يجب أن يكون الحجم المفضل لكل زر هو نفسه نظرًا لأنك لم تقم بإضافة أي نص إلى الأزرار.

أيضًا ، لا توجد حاجة إلى استدعاء setVisible () على الأزرار ، جميع مكونات التأرجح مرئية افتراضيًا ، باستثناء الحاويات ذات المستوى الأعلى (JFrame ، JDialog).

نظرًا لأنك تقوم بإعداد الحدود على كل شيء ، فأنت لا تحتاج إلى مجموعة من LayoutManager على الإطلاق. اضبط LayoutManager على Null ، ثم يمكنك وضع كل شيء بنفسك ، كما أنت في مثالك.

this.setLayoutManager(null)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top