전체 화면 Java의 JFrame 모드 를 사용해야 합니다. 창에

곧 프로젝트를 진행할 예정이며 전체 화면 모드 를 사용해야 합니다.

창에 그래픽이 그려집니다. 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?



답변

더하다:

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


답변

프레임을 전체 화면 모드 (예 : 전체 화면의 영화)로 설정하려면 다음 답변을 확인하십시오.

클래스 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);

}


답변

setExtendedState(int state)상태가 되는를 사용하십시오 JFrame.MAXIMIZED_BOTH.


답변

한 가지 방법은 확장 상태를 사용하는 것입니다. 이것은 기본 OS에 JFrame을 최대화하도록 요청합니다.

setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);

다른 접근 방식은 요구 사항에 맞게 화면을 수동으로 최대화하는 것입니다.

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

그러나 이것은 Ubuntu OS에 함정이 있습니다. 내가 찾은 일은 이것이었다.

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);

Fedora에서는 위의 문제가 없습니다. 그러나 Gnome 또는 KDE 와 관련된 복잡한 문제가 있습니다 . 그러니 조심하세요. 도움이 되었기를 바랍니다.


답변

가장 쉬운 수정 :

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


답변

이 코드를 사용하십시오.

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;
            }
        }
    }
}

이게 도움이 되길 바란다.


답변

그것은 당신이 프레임의 순간에 당신의 개체를 사용하는 데 도움이 될 것입니다

frame.setExtendedState(JFrame.MAXIMIZED_BOTH);