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);
프레임을 전체 화면 모드(전체 화면의 동영상처럼)로 설정하려면 다음 답변을 확인하십시오.
클래스 및 는 앱을 한 화면에서 전체 화면 모드로 설정하는 데 사용됩니다(가처분).
예:
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);
}
를 사용합니다.여기서 state는 입니다.
한 가지 방법은 확장 상태를 사용하는 것입니다.그러면 기본 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);
우선, 이 해상도를 사용하고 싶은 것입니다.1650,1080
.
추가:
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
JFrame의 컴포넌트에 문제가 있는 경우 를 사용하여 모든 컴포넌트를 추가한 후frame.add(component)
method를 입력합니다.
frame.pack();
필요한 것은 이것뿐입니다.
JFrame frame = new JFrame();
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
MAXIED_BOTH 수식자를 사용하면 창 전체에서 최대값(높이와 너비)이 됩니다.
이것을 사용하는 것을 추천하는 것이 몇 가지 있습니다.
frame.setUndecorated(true);
창에는 헤더가 없기 때문에 닫기/복원/최소화 버튼이 없기 때문에 권장하지 않습니다.
JFrame frame = new JFrame();
frame.setPreferredSize(new Dimension(Toolkit.getDefaultToolkit().getScreenSize()));
이렇게 하면 프레임이 화면 크기만큼 커집니다.
속성 도구를 사용할 수 있습니다.
JFrame에 대해 다음 두 가지 속성을 설정합니다.
extendedState 6
resizeable true
가치관이 강조된 의미는 다음과 같습니다.
이렇게 하면 돼요.
public void FullScreen() {
if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) {
final View v = this.activity.getWindow().getDecorView();
v.setSystemUiVisibility(8);
}
else if (Build.VERSION.SDK_INT >= 19) {
final View decorView = this.activity.getWindow().getDecorView();
final int uiOptions = 4102;
decorView.setSystemUiVisibility(uiOptions);
}
}
아래에 2개의 속성을 설정합니다.
- extendedState = 6
- 크기 조정 가능 = 참
저는 좋아요.
언급URL : https://stackoverflow.com/questions/11570356/jframe-in-full-screen-java
'sourcecode' 카테고리의 다른 글
:SSL:http://en.wikipedia.org에CERTIFICATE_VERIFY_FAILED 오류를 매끄럽게 해라. (0) | 2022.09.16 |
---|---|
python에서 정수를 이진수로 변환하는 중 (0) | 2022.09.16 |
장고 마이 그레이션 오류:필드 'name'기본 가치는 없어. (0) | 2022.09.16 |
Larabel 5 클리어 뷰 캐시 (0) | 2022.09.16 |
Jar Mismatch 종속성 목록에서 2가지 버전의 Android-support-v4.jar가 발견되었습니다. (0) | 2022.09.15 |