2009-01-26 148 views
78

我使用摆动放在一起快速和肮脏的动画。我希望窗口最大化。我怎样才能做到这一点?JFrame最大化窗口

回答

119

前提是要扩展的JFrame:

public void run() { 
    MyFrame myFrame = new MyFrame(); 
    myFrame.setVisible(true); 
    myFrame.setExtendedState(myFrame.getExtendedState() | JFrame.MAXIMIZED_BOTH); 
} 
12

如果你使用一个JFrame,试试这个

JFrame frame = new JFrame(); 
//... 
frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
17

喜欢的东西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); 
    } 
} 
+1

+1最大化,除了任务栏。很有帮助。 – Ben 2011-10-02 07:49:16

+0

“|”代表什么?它做了一个,如果失败了,那么另一个呢?还是你指出程序员的选择(即选择一个A | B去参加这个调用?)我以前没有看过这个语法。 – Pureferret 2013-02-27 15:58:31

+0

@Pureferret它是“按位或包含的OR”运算符,如果它存在于任一操作数中,它将复制一位。 (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html或http://www.tutorialspoint.com/java/java_basic_operators.htm) – VonC 2013-02-27 16:11:47

2

我喜欢这个版本:

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

我结束了使用此代码:

public void setMaximized(boolean maximized){ 
    if(maximized){ 
     DisplayMode mode = this.getGraphicsConfiguration().getDevice().getDisplayMode(); 
     Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(this.getGraphicsConfiguration()); 
     this.setMaximizedBounds(new Rectangle(
       mode.getWidth() - insets.right - insets.left, 
       mode.getHeight() - insets.top - insets.bottom 
     )); 
     this.setExtendedState(this.getExtendedState() | JFrame.MAXIMIZED_BOTH); 
    }else{ 
     this.setExtendedState(JFrame.NORMAL); 
    } 
} 

此选项工作最好的所有选项,包括支持多显示器。唯一的缺陷是任务栏偏移量在所有显示器上都是使用某些配置。