পূর্ণ স্ক্রিন জাভাতে জে ফ্রেম


110

আমি শীঘ্রই একটি প্রকল্প করব এবং এতে আমাকে পূর্ণ স্ক্রিন মোড ব্যবহার করতে হবে।

এটি উইন্ডোতে কিছু গ্রাফিক্স আঁকবে। যদি আমি ব্যবহার এটা convienient হবে JFrame বা অনুরূপ কিছু।

স্ক্রিনের চূড়ান্ত রেজোলিউশন কী হবে তা আমি জানি না। আমাকে বলুন গ্রাফিকগুলি স্বয়ংক্রিয়ভাবে পুনরুদ্ধার করা হবে?

JFrame jf = new JFrame();
jf.setSize(1650,1080);
//make it fullscreen;
//now is everything is going to be rescaled so it looks like the original?

আপনাকে "পূর্ণ পর্দা" নির্ধারণ করতে হবে। নীচের উত্তরের সাথে, আপনি ফ্রেমটি সজ্জিত করা উচিত কিনা তা বিবেচনা করতে চাইতে পারেন (এতে শিরোনাম বার এবং সীমানা অন্তর্ভুক্ত রয়েছে)। আপনি যদি কাস্টম পেইন্টিং না করেন তবে উদ্ধার ঘটবে না। আপনি যদি সাধারণ সুইং উপাদান এবং কোনও লেআউট পরিচালক ব্যবহার করেন তবে আপনার খুঁজে পাওয়া উচিত যে লেআউটটি নতুন স্ক্রিন রেজোলিউশনের সাথে সামঞ্জস্য হয়। অবশ্যই আপনি এটি পরীক্ষা করতে চাইবেন;)
ম্যাডপ্রোগ্রামার

আপনি কি সিংহ ফুলস্ক্রিন ব্যবহার করতে চান?
ভাষা

উত্তর:


206

যোগ করুন

frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
frame.setUndecorated(true);
frame.setVisible(true);

52
এছাড়াও frame.setUndecorated(true);এটি সত্যই পূর্ণ পর্দা করতে হবে।
ইয়োদা

আপনি গনুহ / লিনাক্স ব্যবহার করেন, তাহলে আপনি সেট করার প্রয়োজন হতে পারে DisplayMode.BIT_DEPTH_MULTIএবং DisplayMode.REFRESH_RATE_UNKNOWNএকটি নতুন প্রদর্শন মোডে আবেদন। আমি ব্যবহার করতে হবে না setExtendedState। জাবা 8. এর সাথে কুবুন্টু 15.10 ব্যবহার করে কাজ করার জন্য পরীক্ষিত
কোড_ড্রেড

আমি জাভা 8 ব্যবহার করছি, আমার জন্য অঘোষিত ব্যতিক্রম ছুঁড়ে ফেলা হচ্ছে এবং যখন আমি অকেজোযুক্ত সরিয়ে ফেলেছি তখন কোডটি ঠিক কাজ করে এবং ফ্রেমকে পুরো স্ক্রিনও তৈরি করে।
শিলু

আমি আপনাকে ত্রুটি এবং কারণটি বলব। আমি একটি অ্যাপফ্রেম ক্লাস তৈরি করেছি (কিছু ডিফল্ট বৈশিষ্ট্য সহ) এবং জেফ্রেম হিসাবে কোনও শ্রেণি তৈরি করার জন্য আমি কেবল এটি প্রসারিত করি। এটি সত্য হিসাবে সেট করা যায়। এখন উপরে তিনটি লাইন একই ক্রমে থাকতে হবে, যদি দৃশ্যমান হয় এক্সটেন্ডডস্টেটের আগে আপনি ত্রুটির নীচে পাবেন। আমি যখন অর্ডার ত্রুটিটি সংশোধন করেছি এবং আপনি কোনও শিরোনাম বার Exception in thread "main" java.awt.IllegalComponentStateException: The frame is displayable. at java.awt.Frame.setUndecorated(Frame.java:923)
ছাড়াই জেফ্রেম পেয়েছেন


39

আপনি যদি নিজের ফ্রেমটিকে পূর্ণ-স্ক্রিন মোডে রাখতে চান (পুরো স্ক্রিনে চলচ্চিত্রের মতো), এই উত্তরগুলি দেখুন।

ক্লাসগুলি java.awt.GraphicsEnvironmentএবং java.awt.GraphicsDeviceএক স্ক্রিনে পুরো অ্যাপ্লিকেশনটিকে পুরো স্ক্রিন মোডে রাখার জন্য ব্যবহৃত হয় (ডিসপোজটিভ)।

উদাহরণ:

static GraphicsDevice device = GraphicsEnvironment
        .getLocalGraphicsEnvironment().getScreenDevices()[0];

public static void main(String[] args) {

    final JFrame frame = new JFrame("Display Mode");
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.setUndecorated(true);

    JButton btn1 = new JButton("Full-Screen");
    btn1.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            device.setFullScreenWindow(frame);
        }
    });
    JButton btn2 = new JButton("Normal");
    btn2.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            device.setFullScreenWindow(null);
        }
    });

    JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER));
    panel.add(btn1);
    panel.add(btn2);
    frame.add(panel);

    frame.pack();
    frame.setVisible(true);

}

@ পল ভার্গাস: আপনি একটি অজানা উইন্ডোতে একটি মেনু বারও যুক্ত করতে পারেন। ছাড়ার জন্য, উদাহরণস্বরূপ, আপনাকে "Alt + F4" টাইপ করতে হবে।
কার্ডমান


7

একটি উপায় হ'ল বর্ধিত রাজ্যটি ব্যবহার করা। এটি অন্তর্নিহিত ওএসকে জেফ্রেমকে সর্বাধিক করতে বলেছে।

setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);

অন্যান্য প্রয়োজন হ'ল আপনার প্রয়োজনীয়তার জন্য পর্দাটি ম্যানুয়ালি করা।

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(100, 100, (int) dim.getWidth(), (int) dim.getHeight());
setLocationRelativeTo(null);

তবে এটি উবুন্টু ওএস-এ রয়েছে। আমার চারপাশের কাজটি হ'ল এটি।

if (SystemHelper.isUnix()) {
    getContentPane().setPreferredSize(
    Toolkit.getDefaultToolkit().getScreenSize());
    pack();
    setResizable(false);
    show();

    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            Point p = new Point(0, 0);
            SwingUtilities.convertPointToScreen(p, getContentPane());
            Point l = getLocation();
            l.x -= p.x;
            l.y -= p.y;
            setLocation(p);
        }
    });
}

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(100, 100, (int) dim.getWidth(), (int) dim.getHeight());
setLocationRelativeTo(null);

ফেডোরায় উপরের সমস্যাটি উপস্থিত নেই। কিন্তু সঙ্গে জড়িত জটিলতা হয় , Gnome বা ডি-ই । তাই ভাল সাবধান। আশাকরি এটা সাহায্য করবে.


6

সবচেয়ে সহজ ফিক্স:

for ( Window w : Window.getWindows() ) {
    GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow( w );
}

পার্থক্য betweend frame.setExtendedState(JFrame.MAXIMIZED_BOTH);এবং আপনার সমাধান কি?
Yoda

আপনার সমাধানের জন্য আপনার একটি ফ্রেম থাকতে হবে। যদিও আমার জন্য আপনি এটি করেন না এবং এটি স্বয়ংক্রিয়ভাবে প্রোগ্রামের সমস্ত উইন্ডোতে লুপ হয়ে যাবে
অ্যারিয়েল টেরানি

সাবাশ. এই ফিক্সটি ম্যাকোসের জন্য আরও ভাল কাজ করে, যেহেতু অন্য স্থিরকরণটি মেনু বারটিকে দৃশ্যমান রাখে। এই ফিক্সটি পুরোপুরি সমস্ত কিছু আড়াল করে। এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
পানায়োটিস

5

কেবল এই কোডটি ব্যবহার করুন:

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

public class FullscreenJFrame extends JFrame {
    private JPanel contentPane = new JPanel();
    private JButton fullscreenButton = new JButton("Fullscreen Mode");
    private boolean Am_I_In_FullScreen = false;
    private int PrevX, PrevY, PrevWidth, PrevHeight;

    public static void main(String[] args) {
        FullscreenJFrame frame = new FullscreenJFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(600, 500);
        frame.setVisible(true);
    }

    public FullscreenJFrame() {
        super("My FullscreenJFrame");

        setContentPane(contentPane);

        // From Here starts the trick
        FullScreenEffect effect = new FullScreenEffect();

        fullscreenButton.addActionListener(effect);

        contentPane.add(fullscreenButton);
        fullscreenButton.setVisible(true);
    }

    private class FullScreenEffect implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            if (Am_I_In_FullScreen == false) {
                PrevX = getX();
                PrevY = getY();
                PrevWidth = getWidth();
                PrevHeight = getHeight();

                // Destroys the whole JFrame but keeps organized every Component
                // Needed if you want to use Undecorated JFrame dispose() is the
                // reason that this trick doesn't work with videos.
                dispose();
                setUndecorated(true);

                setBounds(0, 0, getToolkit().getScreenSize().width,
                        getToolkit().getScreenSize().height);
                setVisible(true);
                Am_I_In_FullScreen = true;
            } else {
                setVisible(true);
                setBounds(PrevX, PrevY, PrevWidth, PrevHeight);
                dispose();
                setUndecorated(false);
                setVisible(true);
                Am_I_In_FullScreen = false;
            }
        }
    }
}

আশা করি এটা কাজে লাগবে.


2

এটি আপনাকে ফ্রেমের আপনার অবজেক্টটি তাত্ক্ষণিকভাবে ব্যবহার করতে সহায়তা করবে

frame.setExtendedState(JFrame.MAXIMIZED_BOTH);


2

প্রথমত, আপনি যে রেজোলিউশনটি ব্যবহার করতে চান সেটি এটি 1650,1080

এখন যোগ করুন:

frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 

যদি আপনার JFrame এর উপাদানগুলির সাথে সমস্যা থাকে তবে আপনি frame.add(component)পদ্ধতিটি ব্যবহার করে সমস্ত উপাদান যুক্ত করার পরে, নিম্নলিখিত বিবৃতিটি যুক্ত করুন।

frame.pack();

1
JFrame frame = new JFrame();
frame.setPreferredSize(new Dimension(Toolkit.getDefaultToolkit().getScreenSize()));

এটি কেবল ফ্রেমটিকে পর্দার আকার দেয়


1

আপনি বৈশিষ্ট্য সরঞ্জাম ব্যবহার করতে পারেন।
আপনার জেফ্রেমের জন্য 2 টি বৈশিষ্ট্য সেট করুন :

extendedState 6
resizeable    true

0

আপনার কেবল এটির প্রয়োজন:

JFrame frame = new JFrame();
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

আপনি যখন MAXIMIZED_BOTH সংশোধক ব্যবহার করেন, তখন এটি উইন্ডোটি জুড়ে সর্বোচ্চ (উচ্চতা এবং প্রস্থ) হয়ে যায়।

কিছু এটি ব্যবহার করার পরামর্শ দিয়েছে:

frame.setUndecorated(true);

আমি এটি সুপারিশ করব না, কারণ আপনার উইন্ডোতে শিরোলেখ থাকবে না, সুতরাং বন্ধ / পুনরুদ্ধার / ছোট বোতামটি নেই।


0

মান বলতে আমি বোঝাতে চাইছি:

জে ফ্রেম - বৈশিষ্ট্য


ছবিটি পুরোপুরি উত্তর সরবরাহ করতে পারে, দয়া করে কিছু উত্তর দিয়ে আপনার উত্তরটিও বিশদ দেওয়ার চেষ্টা করুন। তবে, আপনার উত্তরটি যেহেতু বিদ্যমান উত্তর হিসাবে একই, তাই দয়া করে সাবধানতার সাথে চিন্তা করুন যে আপনি এই উত্তরটি বিস্তারিতভাবে বর্ণনা করতে চান এবং এই উত্তরটি রাখতে চান কি না।
যোহানেস খোসিয়াওয়ান 许先汉

-1

নীচে 2 সম্পত্তি সেট করুন:

  1. প্রসারিত স্টেট = 6
  2. resizeable = সত্য

এটা আমার জন্য কাজ করে.


2
চূড়ান্ত স্ট্যাটিকস একটি কারণ আছে।
Yoda

হুমম্ম ... নেটবিজেস 8.0.1 এ আমি "রিসাইজেবল" + "রিসাইজেবল" প্রপার্টি (প্রোপার্টি উইন্ডোজ) এর মানগুলির জন্য জেফ্রেম সেট করতে পারি
রুদি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.