سؤال

import javax.swing.*;

class Frame extends JFrame{
    Frame() {
        JFrame j = new JFrame();
        j.setBounds(100, 200, 120, 120);
        j.setTitle("null");
        j.setVisible(true);
        j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

public class test001 {

    public static void main (String Args[]){
        Frame f = new Frame();
         System.out.print("Visible = True");

        f.setVisible(false);
        System.out.print("Visible = false");
    }
}

بعد الأمر (FALSE) (FALSE). نافذة JFrame لا تزال تظهر على سطح المكتب الخاص بي. كيف يمكنني إصلاح ذلك ؟

هل كانت مفيدة؟

المحلول

أنت تهيئة آخر JFrame داخل المنشئ الخاص بك. على افتراض ما تريد هو Frame فئة لتكون غير مرئية، قم بذلك:

class Frame extends JFrame {

   Frame() {
      setBounds(100, 200, 120, 120);
      setTitle("null");
      setVisible(true);
      setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
   }
}

public class test001 {

   public static void main(String Args[]) {
      Frame f = new Frame();
      System.out.print("Visible = True");

      f.setVisible(false);
      System.out.print("Visible = false");
   }
}

نصائح أخرى

المشكلة هي أن أسلوبك الرئيسي يستخدم JFrame مختلفة أن منشئك. ينشئ منشئ الإطار الخاص بك مثيل JFrame جديد (باستخدام JFrame جديد). عند الاتصال F.SetVisible (FALSE)، فإنه يذهب إلى إطارك، ولكن ليس لإنشاء JFrame.

المشكلة هنا هي أن فئة "الإطار" المحمولة JFrame جديدة. لا يؤثر الدعوة المحددة على الإطار على JFrame الذي يتم عرضه.

يمكنك إصلاحه إما فقط باستخدام مثيل JFrame، أو مجرد فئة فرعية. لا تفعل كليهما.

إلى جانب الإطارات المختلفة التي تشير إليها (هذه هي المشكلة التي تم إجابتها https://stackoverflow.com/a/1450488/1326149.)، يجب عليك القيام بكل عمليات الرسومات في مؤشر ترابط EVT (نظرا لأن برنامجك حتى لو كان يعمل بشكل رائع لأنك لا يمكن أن تكون محمولة على منصات مختلفة).

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