Сделать панель Java полноэкранной - PullRequest
15 голосов
/ 27 февраля 2010

Как бы вы сделали JComponent (панель, рамка, окно и т. Д.) Полноэкранным, чтобы оно также перекрывало все на экране, включая панель запуска Windows?

Я не хочу менять разрешение или что-либо еще с графическим устройством, таким как bitdepth и т. Д., Я просто хочу перекрывать все остальное.

Ответы [ 5 ]

18 голосов
/ 27 февраля 2010

Ознакомьтесь с этим руководством , описывающим API полноэкранного режима Java.

Пример кода (взят из учебника). Обратите внимание, что код работает на Window, поэтому для этого вам нужно вставить JPanel в Window (например, JFrame).

GraphicsDevice myDevice;
Window myWindow;

try {
    myDevice.setFullScreenWindow(myWindow);
    ...
} finally {
    myDevice.setFullScreenWindow(null);
}
11 голосов
/ 17 марта 2010

Вы можете попробовать некоторые из кодов на этой странице , позволяя контейнеру заполнить экран (поэтому это не решение для отдельного компонента, а для набора компоненты внутри контейнера, такие как JFrame)

public class MainWindow extends JFrame
{
  public MainWindow()
  {
    super("Fullscreen");
    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(l);
      }
    });
  }
  ...
}
6 голосов
/ 27 февраля 2010

Вам необходимо использовать следующий API: http://java.sun.com/docs/books/tutorial/extra/fullscreen/index.html

Переход на полный экран не так прост, как создание большой панели, вам нужно изучить основную графику ОС. Но ваш код JPanel должен быть переведен просто отлично.

1 голос
/ 22 апреля 2011

Мне нужно было много искать, делать то же самое. Вот полностью рабочая версия по шагам, так что я могу найти ее позже и использовать.

Шаг 1: создайте файл с именем fullscreen.java

Шаг 2: скопируйте этот код и вставьте его как есть:

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

public class fullscreen extends Window 
{
  private Button button;

  public fullscreen() 
  {
    super(new Frame());
    button = new Button("Close");
    button.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        System.exit(0);
      }
    });

    setLayout(new FlowLayout());
    add(button);

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    setBounds(0,0,screenSize.width, screenSize.height);
  }

  public static void main(String[] args) 
  {
    // This will take over your whole screen tested and works in my:
    // Fedora 12/13/14
    // CentOS 5.0
    // if this works for you, in other platforms, please leave a comments which OS it worked.
    // happy coding!
    new fullscreen().setVisible(true);
  }

}

Шаг 3: скомпилируйте код и запустите

Готово.

0 голосов
/ 17 марта 2014

На вашем месте я бы попытался заставить Java не рисовать границу Jframe, а затем сделать так, чтобы он занимал весь экран.

import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;

import javax.swing.JFrame;


public class FenNoBorder extends JFrame {

    public FenNoBorder () {
        setUndecorated(true);
        setVisible(true);
        GraphicsEnvironment graphicsEnvironment=GraphicsEnvironment.getLocalGraphicsEnvironment();
        Rectangle maximumWindowBounds=graphicsEnvironment.getMaximumWindowBounds();
        setBounds(maximumWindowBounds);
    }
}
...