Windows はサポートしていませんmyFrame.setExtendedState(JFrame.MAXIMIZED_VERT);
。
そこで、画面サイズを取得しようとし、JFrames の高さを画面の高さと同じにしました。しかし、それは Windows タスクバーをカバーします。
JFrame を垂直方向に最大化する他の方法はありますか?
ありがとう、
esanits
これを試してみてください、相棒:
Insets screenInsets = Toolkit.getDefaultToolkit().getScreenInsets(t.getGraphicsConfiguration());
int taskHeight=screenInsets.bottom;
System.out.println(taskHeight);
ウィンドウとフレームに関する基本的な情報を取得する1つの方法は次のとおりです。
import java.awt.*;
import javax.swing.*;
public class FrameInfo
{
public static void main(String[] args)
{
String laf = "javax.swing.plaf.metal.MetalLookAndFeel";
// laf = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
// laf = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
// try { UIManager.setLookAndFeel( laf ); }
// catch (Exception e) { System.out.println(e); }
// JFrame.setDefaultLookAndFeelDecorated(true);
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
Rectangle bounds = env.getMaximumWindowBounds();
System.out.println("Screen Bounds: " + bounds );
GraphicsDevice screen = env.getDefaultScreenDevice();
GraphicsConfiguration config = screen.getDefaultConfiguration();
System.out.println("Screen Size : " + config.getBounds());
System.out.println(Toolkit.getDefaultToolkit().getScreenSize());
JFrame frame = new JFrame("Frame Info");
System.out.println("Frame Insets : " + frame.getInsets() );
frame.setSize(200, 200);
// frame.pack();
System.out.println("Frame Insets : " + frame.getInsets() );
frame.setVisible( true );
System.out.println("Frame Size : " + frame.getSize() );
System.out.println("Frame Insets : " + frame.getInsets() );
System.out.println("Content Size : " + frame.getContentPane().getSize() );
}
}
これが最善の方法かどうかはわかりませんが、私にとってはうまくいきました...
Insets screenInsets = Toolkit.getDefaultToolkit().getScreenInsets(mainScreen.getGraphicsConfiguration());
int taskHeight=screenInsets.bottom;
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
mainScreen.setSize(d.width/2, d.height - taskHeight);
mainScreen.setLocation(d.width/2, 0);