Je mets en place une animation rapide et sale en utilisant le swing. Je voudrais que la fenêtre soit maximisée. Comment puis je faire ça?
89
Je mets en place une animation rapide et sale en utilisant le swing. Je voudrais que la fenêtre soit maximisée. Comment puis je faire ça?
À condition que vous étendiez JFrame:
public void run() {
MyFrame myFrame = new MyFrame();
myFrame.setVisible(true);
myFrame.setExtendedState(myFrame.getExtendedState() | JFrame.MAXIMIZED_BOTH);
}
JFrame.MAXIMIZED_BOTH
plutôt.setVisible(true)
abord, le cadre n'est pas dimensionné correctement. Je l'ai essayé avant et aprèssetExtendedState()
, et jesetVisible()
dois être le premier.JFrame
hérite deFrame
).Quelque chose comme
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); } }
la source
|
pour? En fait-il un, et si cela échoue, il en fait l'autre? Ou indiquez-vous le choix du programmeur (c'est-à-dire choisissez l'un des A | B pour cet appel?) Je n'ai jamais vu cette syntaxe auparavant.Si vous utilisez un JFrame, essayez ceci
JFrame frame = new JFrame(); //... frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
la source
Et pourquoi pas
JFrame.setExtendedState(JFrame.MAXIMIZED_BOTH)
?la source
j'aime cette version:
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); } }
la source
La façon de définir JFrame en plein écran consiste à définir l'
MAXIMIZED_BOTH
option qui représenteMAXIMIZED_VERT | MAXIMIZED_HORIZ
, qui définit respectivement le cadre pour maximiser verticalement et horizontalementpackage 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); } }
la source
J'ai essayé les solutions dans ce fil et celles ici , mais le simple fait d'appeler
setExtendedState(getExtendedState()|Frame.MAXIMIZED_BOTH);
juste après l'appelsetVisible(true);
ne fonctionne apparemment pas pour mon environnement (Windows 10, JDK 1.8, ma barre des tâches est sur le côté droit de mon écran). Faire de cette façon laisse encore un petit espace à gauche, à droite et en bas.Ce qui a fonctionné pour moi, c'est d'appeler
setExtendedState(...
lorsque la fenêtre est activée, comme ceci: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); } } ); } }
la source
J'ai fini par utiliser ce code:
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); } }
Ces options fonctionnaient le mieux de toutes les options, y compris la prise en charge de plusieurs moniteurs. Le seul défaut que cela présente est que le décalage de la barre des tâches est utilisé sur tous les moniteurs dans certaines configurations.
la source
La réponse @kgiannakakis est tout à fait correcte, mais si quelqu'un est coincé dans ce problème et utilise Java 6 sur Linux (par exemple, Mint 19 Cinnamon), l' état MAXIMIZED_BOTH n'est parfois pas appliqué.
Vous pouvez essayer d'appeler la méthode pack () après avoir défini cet état.
Exemple de code:
public MainFrame() { setContentPane(contentPanel); //some JPanel is here setPreferredSize(new Dimension(1200, 800)); setMinimumSize(new Dimension(1200, 800)); setSize(new Dimension(1200, 800)); setExtendedState(JFrame.MAXIMIZED_BOTH); pack(); }
Cela n'est pas nécessaire si vous utilisez Java 7+ ou Java 6 sous Windows.
la source