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

كيف نسوي واجهة Full-Screen كليا بالجافا

بدأه المشاكـس5550 في 1 نوفمبر 2012 · 9 رد · 1,333 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم :salam:

حياكم الله يا الربع :D

بدي أعرف كيف اسوي واجهة "Panel" ذات حجم Full Screen بمعنى الكلمة "ما بدي انو Task Bar بيظهر" :thinking:

لقد جربت استعمال GraphicsDevice والـ getScreenSize على ما اعتقد "واللتان تنتميان الى الـ Toolkit" ونقلت الـ Weightو الـ Height الى setSize() حق الـ JFrame ... لكن شريط المهام حق Start لا يزال ظاهر ... :tantrum:

:bye:

556891961.gif

I am learning from you

it is the programmer eye

#2

قم بجعل الــ JFrame التي تريد عرضها undecorated

قمت باستخدام هذه الخاصيه في برنامج سابق كــ Client في برنامج Electronic Voting والبرنامج يعمل ويملأ الشاشه كامله.

1

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#3

قم باستدعاء الدالة setUndecorated لإزالة إطار النافذة (Border) ثم استخدم الدالة setFullScreenWindow لتهيئة النافذة في وضع Full-Screen.

مثال ع السريع :

import java.awt.Color;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * Passer un JFrame en mode plein écran
 */
public class FrameFullSize {

    public static void main(String[] args) {
        GraphicsDevice device;
        JPanel pan = new JPanel();
        JFrame frame = new JFrame("Frame en mode plein écran");
        JButton bouton = new JButton("Quitter");
        bouton.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CloseActionPerformed(evt);
            }
        });
        bouton.setBackground(Color.orange);
        pan.add(bouton);
        pan.setBackground (Color.green);
        frame.setContentPane(pan);
        frame.setUndecorated(true);
        device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
        if (device.isFullScreenSupported()) {
            device.setFullScreenWindow(frame);
        } else {
            System.err.println("Le mode plein ecran n'est pas disponible");
        }
    }

    public static void CloseActionPerformed(java.awt.event.ActionEvent evt) {
        System.exit(0);
    }
}

تحياتي.

تم تعديل هذه المشاركة بواسطة khaled_prg في 1 نوفمبر 2012 في 16:27

3
#4
import javax.swing.JFrame;

/**
 *
 * @author JKelany
 */
public class TestFrame {

	public static void main(String[] args) {
    	JFrame frame = new JFrame();
    	frame.setUndecorated(true);
    	frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    	frame.setVisible(true);
	}
}
2

Software Developer
Mahmoudkelany.com


 

#5
mental-driller كتب:

قم بجعل الــ JFrame التي تريد عرضها undecorated

قمت باستخدام هذه الخاصيه في برنامج سابق كــ Client في برنامج Electronic Voting والبرنامج يعمل ويملأ الشاشه كامله.

مشكور اخوي ... لا تخف عليك خافية في الجافا :wink:

khaled_prg كتب:

قم باستدعاء الدالة setUndecorated لإزالة إطار النافذة (Border) ثم استخدم الدالة setFullScreenWindow لتهيئة النافذة في وضع Full-Screen.

مثال ع السريع :

import java.awt.Color;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * Passer un JFrame en mode plein écran
 */
public class FrameFullSize {

    public static void main(String[] args) {
        GraphicsDevice device;
        JPanel pan = new JPanel();
        JFrame frame = new JFrame("Frame en mode plein écran");
        JButton bouton = new JButton("Quitter");
        bouton.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CloseActionPerformed(evt);
            }
        });
        bouton.setBackground(Color.orange);
        pan.add(bouton);
        pan.setBackground (Color.green);
        frame.setContentPane(pan);
        frame.setUndecorated(true);
        device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
        if (device.isFullScreenSupported()) {
            device.setFullScreenWindow(frame);
        } else {
            System.err.println("Le mode plein ecran n'est pas disponible");
        }
    }

    public static void CloseActionPerformed(java.awt.event.ActionEvent evt) {
        System.exit(0);
    }
}

تحياتي.

كفيت ووفيت اخوي خالد ... كود وااايد حلو مع أن عيوني ما تحملوا اللون الاخضر :lol:

مشكور مرة أخرى

Mahmoud Kelany كتب:

import javax.swing.JFrame;

/**
 *
 * @author JKelany
 */
public class TestFrame {

	public static void main(String[] args) {
    	JFrame frame = new JFrame();
    	frame.setUndecorated(true);
    	frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    	frame.setVisible(true);
	}
}

مافي أحلى من البساطة

شكرا جزيلا لك ... عنجد مفيد الكود تبعك

+1 for every one

Thank you so much

556891961.gif

I am learning from you

it is the programmer eye

#6
khaled_prg كتب:

قم باستدعاء الدالة setUndecorated لإزالة إطار النافذة (Border) ثم استخدم الدالة setFullScreenWindow لتهيئة النافذة في وضع Full-Screen.

مثال ع السريع :

import java.awt.Color;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * Passer un JFrame en mode plein écran
 */
public class FrameFullSize {

    public static void main(String[] args) {
        GraphicsDevice device;
        JPanel pan = new JPanel();
        JFrame frame = new JFrame("Frame en mode plein écran");
        JButton bouton = new JButton("Quitter");
        bouton.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CloseActionPerformed(evt);
            }
        });
        bouton.setBackground(Color.orange);
        pan.add(bouton);
        pan.setBackground (Color.green);
        frame.setContentPane(pan);
        frame.setUndecorated(true);
        device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
        if (device.isFullScreenSupported()) {
            device.setFullScreenWindow(frame);
        } else {
            System.err.println("Le mode plein ecran n'est pas disponible");
        }
    }

    public static void CloseActionPerformed(java.awt.event.ActionEvent evt) {
        System.exit(0);
    }
}

تحياتي.

- هل هناك حقا شاشات لا تدعم الـ isFullScreenSupported() ؟؟؟ هل لي بمثال ، ولماذا لا تدعمه ؟؟

- لقد قمت أخوي خالد سلمك الله باضافة زر وسميته Quitter لكنك ومع ذلك لم تضع له الاحداثيات الواجب ان يظهر فيها ...ومع هذا ظهر وسط الشاشة كأننا عملنا له CENTER ... عجيب ، هل هو تلقائي اقصد مثل ما تقولون Par Defaut ؟؟

شكرا لك مرة اخرى :wink:

556891961.gif

I am learning from you

it is the programmer eye

#7

وضع الــ Full-Screen متوفر ابتداء من Java 1.4, نافذة واحدة فقط يُمكنها أن تكون في وضع ملئ الشاشة حيث يتم اعتبارها فوق جميع النوافذ حسب ترتيب الــ Z-Order.

لكن وضع ملئ الشاشة بشكل عام يخضع لــ Desktop Settings التي قام بها الــ User و بالتالي إذا قام المستخدم بتعطيل هذا الوضع, ستعيد الدالة isFullScreenSupported القيمة false.

أيضاً, في لينكس قد تُعيد الدالة isFullScreenSupported القيمة true بالرغم من الإعدادات لا تُناسب وضع الــ Full و بالتالي, الحل الأفضل في هذه الحالة هو التحقق من طبيعة النظام و استخدام الوضع المناسب :

Frame frame = new Frame();
frame.setUndecorated( true ); //désactive la décoration de la fenêtre
GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice graphicsDevice = graphicsEnvironment.getDefaultScreenDevice();
if( graphicsDevice.isFullScreenSupported() 
    && System.getProperty( "os.name" ).compareToIgnoreCase( "Linux" ) != 0 )
    {
	 System.out.println("mode plein écran exclusif supporté");
     graphicsDevice.setFullScreenWindow(frame);
    }
else
    {
	 System.out.println("mode plein écran exclusif non supporté");
     //dans ce cas, utilisez plutôt le mode plein écran simulé
    }
frame.setVisible( true );

كذلك, إذا قمتَ بتعطيل Le thread d'affichage awt فلن تتمكن من تنفيذ الكود.

هذه الأسباب و غيرها جعلتني أتحقق من الحالتين معاً :)

بالنسبة للزر Quitter فالــ Layout Manager هو FlowLayout الذي يبدأ بوضع الــ Component في المنتصف, و عندما تضيق مساحة السطر الحالي (في حالة وجودة عدة components) ينتقل إلى السطر الموالي و هكذا ..

1
#8

:lol: :lol:

مشكور

556891961.gif

I am learning from you

it is the programmer eye

#10

الشكر لك أستاذي

والشكر موصول الى أستاذ أستاذي

بارك الله فيكم :happy:

556891961.gif

I am learning from you

it is the programmer eye

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