سؤال

عندما أقوم بتشغيل هذا ، لا يكون Jlabel مرئيًا ، لكن عندما أقوم بتغيير حجم النافذة (مع الماوس) ، يتم عرض Jlabel. لماذا ا؟

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

public class FrmTaoLogin extends JFrame {

  private JPanel pnlLeft = new JPanel();

  public FrmTaoLogin() {

    super();

    pnlLeft.setBorder(BorderFactory.createEtchedBorder());
    pnlLeft.add(new JLabel("test1"));
    getContentPane().add(pnlLeft,BorderLayout.SOUTH);

    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(200, 200); 

  }

  public static void main(String[] args) {

    FrmTaoLogin FrmLogin = new FrmTaoLogin();
    FrmLogin.setVisible(true);

  }

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

المحلول

هذا يبدو وكأنه بعض الأخطاء L&F في Java VMs الأقدم على نظام التشغيل الأحدث. على سبيل المثال على Windows 7 ، يتم حل معظم المشكلات أولاً مع 1.6.0_17. يجب أن تبدأ برنامجك باستخدام وحدة تحكم. إذا رأيت بعض stacktraces في مؤشر ترابط الحدث ، فهذه مشكلة في خطأ L&F.

نصائح أخرى

IIRC ، يحدث هذا عندما لا تتصل بـ Frame.Pack (). يجب أن تعمل إذا قمت باستدعاء "Pack ()" كخط آخر من المنشئ.

أظن أن المشكلة هنا قد تتعلق بمحاولة بناء وإظهار مكونات واجهة المستخدم الرسومية خارج موضوع الأرجوحة.

ماذا لو تغيرت main() لاستدعاء رمز واجهة المستخدم الرسومية على موضوع التأرجح ، مثل هذا؟

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            FrmTaoLogin FrmLogin = new FrmTaoLogin();
            FrmLogin.setVisible(true);
        }
    });
}

شكرا للجميع ، حل المشكلة. أقوم بتغيير موضوع Windows وجميعهم يعملون بشكل جيد. أعتقد أن هذا هو Windows Aero ومشكلتي Nvidia Geforce FX5500. مسؤول البطاقة هذا لا يعمل مع Windows Aero.

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