Saya menyusun animasi cepat dan kotor menggunakan ayunan. Saya ingin jendela dimaksimalkan. Bagaimana saya bisa melakukan itu?
java
swing
maximize-window
Nggak
sumber
sumber
JFrame.MAXIMIZED_BOTH
sebagai gantinya.setVisible(true)
terlebih dahulu, bingkai tidak berukuran benar. Saya mencobanya sebelum dan sesudahsetExtendedState()
, dansetVisible()
harus menjadi yang pertama.JFrame
diwarisi dariFrame
).Sesuatu seperti
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); } }
sumber
|
untuk? Apakah itu melakukan satu, dan jika gagal, apakah yang lain? Atau apakah Anda menunjukkan pilihan programmer (yaitu memilih salah satu dari A | B untuk digunakan dalam panggilan ini?) Saya belum pernah melihat sintaks ini sebelumnya.Jika Anda menggunakan JFrame, coba ini
JFrame frame = new JFrame(); //... frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
sumber
Bagaimana dengan
JFrame.setExtendedState(JFrame.MAXIMIZED_BOTH)
?sumber
saya suka versi ini:
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); } }
sumber
Cara mengatur JFrame ke full-screen, adalah dengan mengatur
MAXIMIZED_BOTH
option yang manaMAXIMIZED_VERT | MAXIMIZED_HORIZ
, masing-masing mengatur frame untuk dimaksimalkan secara vertikal dan horizontal.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); } }
sumber
Saya sudah mencoba solusi di utas ini dan yang ada di sini , tetapi hanya menelepon
setExtendedState(getExtendedState()|Frame.MAXIMIZED_BOTH);
tepat setelah meneleponsetVisible(true);
tampaknya tidak berfungsi untuk lingkungan saya (Windows 10, JDK 1.8, bilah tugas saya ada di sisi kanan layar saya). Melakukannya dengan cara ini masih menyisakan sedikit ruang di kiri, kanan dan bawah.Namun, yang berhasil untuk saya adalah memanggil
setExtendedState(...
saat jendela diaktifkan, seperti: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); } } ); } }
sumber
Saya akhirnya menggunakan kode ini:
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); } }
Opsi ini bekerja paling baik dari semua opsi, termasuk dukungan beberapa monitor. Satu-satunya kelemahan yang dimilikinya adalah bahwa offset bilah tugas yang digunakan pada semua monitor adalah beberapa konfigurasi.
sumber
Jawaban @kgiannakakis sepenuhnya benar, tetapi jika seseorang terjebak dalam masalah ini dan menggunakan Java 6 di Linux (misalnya, Mint 19 Cinnamon), status MAXIMIZED_BOTH terkadang tidak diterapkan.
Anda bisa mencoba memanggil metode pack () setelah mengatur status ini.
Contoh kode:
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(); }
Ini tidak diperlukan jika Anda menggunakan Java 7+ atau Java 6 di Windows.
sumber