전체 화면 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 와 관련된 복잡한 문제가 있습니다 . 그러니 조심하세요. 도움이 되었기를 바랍니다.
이 코드를 사용하십시오.
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;
}
}
}
}
이게 도움이 되길 바란다.
가장 쉬운 수정 :
for ( Window w : Window.getWindows() ) {
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow( w );
}
그것은 당신이 프레임의 순간에 당신의 개체를 사용하는 데 도움이 될 것입니다
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
우선 사용하려는 해상도 인 1650,1080
.
이제 다음을 추가하십시오.
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
JFrame의 구성 요소에 문제가있는 경우 frame.add(component)
메서드를 사용하여 모든 구성 요소를 추가 한 후 다음 문을 추가합니다.
frame.pack();
다음 만 필요합니다.
JFrame frame = new JFrame();
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
MAXIMIZED_BOTH 수정자를 사용하면 창 전체 (높이 및 너비)에서 최대 값이됩니다.
이것을 사용하여 제안한 몇 가지가 있습니다.
frame.setUndecorated(true);
창에 헤더가 없으므로 닫기 / 복원 / 최소화 버튼이 없으므로 권장하지 않습니다.
JFrame frame = new JFrame();
frame.setPreferredSize(new Dimension(Toolkit.getDefaultToolkit().getScreenSize()));
이것은 프레임을 화면 크기로 만듭니다.
강조 표시된 값은 다음을 의미합니다.
아래에 2 개의 속성을 설정합니다.
- extendedState = 6
- 크기 조정 가능 = true
그것은 나를 위해 작동합니다.
참고 URL : https://stackoverflow.com/questions/11570356/jframe-in-full-screen-java
'IT' 카테고리의 다른 글
TimeStamp를 Java에서 날짜로 변환하는 방법은 무엇입니까? (0) | 2020.08.27 |
---|---|
node.js에서 어디에서 있습니까의 sha1 해시를 어떻게 얻을 수 있습니까? (0) | 2020.08.27 |
한 활동의 값을 이전 활동으로 전달하는 방법 (0) | 2020.08.27 |
다른 시간에 다른 변수로 목록을 정렬하는 방법 (0) | 2020.08.27 |
akka는 Erlang과 어떻게 비교 검증? (0) | 2020.08.27 |