توضح هذه المقالة بالتفصيل تأثير نافذة بدء تشغيل Java عند تشغيل أحد البرامج، مثل Microsoft Word وBorland JBuilder وما إلى ذلك. وتسمى هذه النوافذ بنوافذ المعلومات. وتتمثل ميزة استخدام نافذة المعلومات في أنه يمكن للمستخدم معرفة حالة تشغيل البرنامج لفترة من الوقت قبل انتظار ظهور الواجهة الرئيسية للبرنامج. سيوضح هذا المثال كيفية تنفيذ نافذة المعلومات. عند فتح البرنامج، يتم عرض نافذة المعلومات أولاً ويتم العد التنازلي على النافذة حتى "الانتظار 0"، ثم يتم إغلاق النافذة وعرض النافذة الرئيسية للبرنامج.
طرق التنفيذ الرئيسية لهذه الوظيفة هي كما يلي:
بشكل عام، لا تحتوي معظم نوافذ المعلومات على شريط عنوان، لذلك لا يمكن تنفيذ نافذة المعلومات عن طريق وراثة فئة JFrame، والطريقة البسيطة هي تنفيذها عن طريق وراثة فئة JWindow (بالطبع، من الممكن أيضًا وراثة فئة Window). ولكن أحد المبادئ هو محاولة استخدام فئات الواجهة في التأرجح). بالإضافة إلى ذلك، يستخدم هذا المثال فئة MediaTracker في الحزمة java.awt. تتمثل ميزة استخدام هذه الفئة في أنها يمكنها إدارة الصور التي سيتم استخدامها في البرنامج بشكل أفضل، ويمكنها أيضًا ضمان عرض الصور والواجهة في نفس الوقت، وتجنب عيب عرض الصور بعد فترة طويلة من فتح النافذة. معروض.
الخطوات المحددة هي كما يلي:
1. قم بإنشاء مشروع جديد، وقم بتسميته JSpleshWindowDemo، واحتفظ بالإعدادات الأخرى كإعداد افتراضي.
2. قم بإنشاء تطبيق جديد، وقم بتسميته JSpleshWindowDemo، وقم بتسمية النافذة الرئيسية MainFrame، وقم بتسمية عنوان النافذة الرئيسية JSpleshWindowDemo.
3. لنكتب الكود الخاص بنافذة المعلومات أولاً. قم بإنشاء فئة جديدة SpleshWindow.java، والتي ترث فئة java.swing.JWindow. في فئة SpleshWindow، حدد خصائص جديدة بالكود التالي:
Private String StatusStr=null; // المعلومات التي سيتم عرضها في نافذة المعلومات public Image logoImg=null;
4. أضف كودًا إلى طريقة الإنشاء، وقم بتحميل الصورة وتهيئة النموذج، ويكون كود التنفيذ كما يلي:
public SpleshWindow(JFrame Owner) { // خذ كائن JFrame كمعلمة، والذي يمكن أن يكون التفاعل بين نافذة المعلومات والنافذة الرئيسية super( Owner ); // تحميل الصورة logoImg=getToolkit().getImage( ClassLoader. getSystemResource("images/splesh.jpg ") );// انتظر حتى يتم تحميل الصورة java.awt.MediaTracker Tracker=new java.awt.MediaTracker( this ); // أنشئ كائن MediaTracker Tracker.addImage( logoImg , 0 ); // ضع الصورة في كائن MediaTracker بالرقم التسلسلي 0 حاول { // انتظر حتى يتم تحميل الصورة Tracker.waitForAll();}catch ( InterruptedException e ) {e .printStackTrace();}// اضبط موضع عرض نموذج المعلومات على الشاشة setLocation( getToolkit().getScreenSize().width/2 - logoImg.getWidth(this)/2 , getToolkit().getScreenSize().height/2 -logoImg.getHeight(this)/2 );setSize( logoImg.getWidth(this )، logoImg.getHeight(this) );5. اكتب طريقة لتعيين معلومات العرض، الكود كما يلي:
public void setStatus( String Status ){statusStr=status;paint( getGraphics() ); // أعد رسم النافذة لتحديث معلومات العرض في نافذة المعلومات}6. إعادة تعيين طريقة الطلاء () لرسم الصور وعرض المعلومات، يكون الكود كما يلي:
طلاء الفراغ العام (Graphics g) {/**@todo تجاوز طريقة java.awt.Component هذه*/super.paint(g);// ارسم الصورة if (logoImg!=null)g.drawImage( logoImg, 0, 0 , this );// ارسم المعلومات وعرضها if (statusStr!=null ){g.setColor(Color.red);g.drawString(statusStr , 240, getSize().height-250 );}}7. قم بكتابة فئة MainFrame، وقم بتنفيذ واجهة java.lang.Runnable، وحدد السمات الجديدة، وتكون الإعدادات كما يلي:
خاص SpleshWindow spleshWindow=null;
8. أضف رمز تشغيل نافذة المعلومات إلى طريقة التهيئة لفئة MainFrame، رمز التنفيذ كما يلي:
استثناء jbInit () باطل خاص {//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[أيقونتك]")));contentPane = (JPanel) this.getContentPane();contentPane.setLayout (borderLayout1);this.setSize(new Dimension(400, 300));this.setTitle("JSpleshWindowDemo");// أنشئ موضوعًا جديدًا وقم بتشغيل نافذة المعلومات Thread t = new Thread(this);t.start();// انتظر حتى تظهر نافذة المعلومات حاول{ t.join( );}catch ( InterruptedException e ){e.printStackTrace() ;}// عرض رسالة إلى نافذة المعلومات long x=System.currentTimeMillis();while ( System.currentTimeMillis()-x <35000 ){System.out.print( "Waiting "+(35000-System.currentTimeMillis()+x+" /r") );// يمكنك تعيين سلسلة الحالة في نوافذ البدايةpleshWindow.setStatus ("انتظار"+(35-(طويل)(System.currentTimeMillis()/1000)+(طويل)(x/1000)) );}// أغلق نافذة المعلومات if ( spleshWindow!=null ) {spleshWindow.dispose();spleshWindow=null;}}9. اكتب طريقة التشغيل () لفئة MainFrame كما يلي:
public void run() {// أنشئ نافذة معلومات جديدة واعرض spleshWindow=new SpleshWindow( this );spleshWindow.show();// throw new java.lang.UnsupportedOperationException("Method run() لم يتم تنفيذه بعد.") ;}