JFrameLinux(およびここでは異なるウィンドウマネージャーの下)、Mac、およびWindowsでJavaウィンドウを常に同じ方法で表示する正しい方法は何ですか?
JFrameWindowsでは最大化されているため、実際にはいくつかの問題があります。JFrame素晴らしいWMを備えたLinux Notebookでは、ウィンドウはパックされているだけで、Macではウィンドウが半分最大化されているため、Linuxよりも大きくなります。パック...
画面をMaximiumサイズに設定しようとしました。これは、Windowsでは非常にうまく機能しているようですが、MacやLinux(Awesome WM)では機能しません。
これは非常に単純なフレームで、現在行っていることを説明しています。
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class JFrameMaximize extends JFrame {
private static final long serialVersionUID = 1L;
public JFrameMaximize() {
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel panel = new JPanel();
// A Fake Dimension, inside this panel are a lot of swing components
panel.setPreferredSize(new Dimension(333, 666));
setContentPane(panel);
// Now we want to set the Extended State
if (Toolkit.getDefaultToolkit().isFrameStateSupported(MAXIMIZED_BOTH)) {
setExtendedState(MAXIMIZED_BOTH);
} else {
System.out.println("Oh oh... i have a problem...");
// Now we need a Fullscreen but we dont have the size of a WindowManager Panels and
// stuff
Dimension max = Toolkit.getDefaultToolkit().getScreenSize();
// asume that the screen has a 20px bar on top (=awesome wm)
max.height -= 20;
setSize(max);
setLocation(0, 20);
// The alternative is to call pack() here, but then the window is totally broken, because of the internal components. Every Panel we load in here has a different size, so the window will scale up and down on every panel change.
}
}
public static void main(String... args) {
new JFrameMaximize();
}
}
問題は、一部のウィンドウマネージャーにはMaximize_both拡張状態がないため、計算する必要があることです。これは、すべてのPCで知ることは不可能です。すべてのウィンドウマネージャーでウィンドウを正しいサイズに設定するにはどうすればよいですか?
唯一の解決策は、固定されたデフォルトサイズであり、これはJFrame?に与えられます。とウィンドウを最大化しようとしますか?