스윙을 사용하여 빠르고 더러운 애니메이션을 구성하고 있습니다. 창을 최대화하고 싶습니다. 어떻게 할 수 있습니까?
답변
JFrame을 확장하는 경우 :
public void run() {
MyFrame myFrame = new MyFrame();
myFrame.setVisible(true);
myFrame.setExtendedState(myFrame.getExtendedState() | JFrame.MAXIMIZED_BOTH);
}
답변
같은 것 this.setExtendedState(this.getExtendedState() | this.MAXIMIZED_BOTH);
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame
{
public Test()
{
GraphicsEnvironment env =
GraphicsEnvironment.getLocalGraphicsEnvironment();
this.setMaximizedBounds(env.getMaximumWindowBounds());
this.setExtendedState(this.getExtendedState() | this.MAXIMIZED_BOTH);
}
public static void main(String[] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
Test t = new Test();
t.setVisible(true);
}
}
답변
JFrame을 사용하는 경우 다음을 시도하십시오.
JFrame frame = new JFrame();
//...
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
답변
답변
나는이 버전을 좋아한다 :
import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
import java.awt.Toolkit;
import javax.swing.JFrame;
public class Test
{
public static void main(String [] args)
{
final JFrame frame = new JFrame();
final GraphicsConfiguration config = frame.getGraphicsConfiguration();
final int left = Toolkit.getDefaultToolkit().getScreenInsets(config).left;
final int right = Toolkit.getDefaultToolkit().getScreenInsets(config).right;
final int top = Toolkit.getDefaultToolkit().getScreenInsets(config).top;
final int bottom = Toolkit.getDefaultToolkit().getScreenInsets(config).bottom;
final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
final int width = screenSize.width - left - right;
final int height = screenSize.height - top - bottom;
frame.setResizable(false);
frame.setSize(width,height);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
답변
JFrame을 전체 화면으로 설정하는 방법은를 MAXIMIZED_BOTH
나타내는 옵션 을 설정하는 것입니다.이 옵션은 MAXIMIZED_VERT | MAXIMIZED_HORIZ
각각 프레임을 세로 및 가로로 최대화하도록 설정합니다.
package Example;
import java.awt.GraphicsConfiguration;
import javax.swing.JFrame;
import javax.swing.JButton;
public class JFrameExample
{
static JFrame frame;
static GraphicsConfiguration gc;
public static void main(String[] args)
{
frame = new JFrame(gc);
frame.setTitle("Full Screen Example");
frame.setExtendedState(MAXIMIZED_BOTH);
JButton button = new JButton("exit");
b.addActionListener(new ActionListener(){@Override
public void actionPerformed(ActionEvent arg0){
JFrameExample.frame.dispose();
System.exit(0);
}});
frame.add(button);
frame.setVisible(true);
}
}
답변
이 스레드의 솔루션과 여기 에있는 솔루션을 시도 했지만 호출 setExtendedState(getExtendedState()|Frame.MAXIMIZED_BOTH);
직후 호출하는 것만 setVisible(true);
으로도 내 환경에서 작동하지 않습니다 (Windows 10, JDK 1.8, 내 작업 표시 줄이 화면 오른쪽에 있음). 이렇게하면 여전히 왼쪽, 오른쪽 및 아래쪽에 작은 공간이 남습니다.
그러나 나를 위해 일한 setExtendedState(...
것은 창이 활성화 될 때 다음과 같이 호출 됩니다.
public class SomeFrame extends JFrame {
public SomeFrame() {
// ...
setVisible(true);
setResizable(true);
// if you are calling setSize() for fallback size, do that here
addWindowListener (
new WindowAdapter() {
private boolean shown = false;
@Override
public void windowActivated(WindowEvent we) {
if(shown) return;
shown = true;
setExtendedState(getExtendedState()|JFrame.MAXIMIZED_BOTH);
}
}
);
}
}