私は、最新のIntelliJコミュニティ版で開発しているWindowsマシンでJava8を使用しています。 JFrameをフルスクリーンにするには、私が検証したい1つの異なる動作に直面したところで、以下の解決策を見つけます。私はJFrameのフルスクリーンを作るためにライン以下の3を配置する必要がありソリューションを1としてJFrame full screenJFrameを装飾なしで全画面表示
から取っ
ソリューション:
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setUndecorated(true);
frame.setVisible(true);
しかし、私のプロジェクトで、私はそのクラスのAppFrame.javaを作成しましたJFrameを拡張します。そして、デフォルトのコンストラクタでは、フォントなどの基本的なプロパティを設定し、重要な可視性をtrueに設定しました。
import javax.swing.*;
import java.awt.*;
public class AppFrame extends JFrame {
AppFrame() {
Font baseFont = new Font("Dialog", Font.PLAIN, 12);
setFont(baseFont);
setLocationRelativeTo(null);
setBackground(Color.WHITE);
setForeground(Color.black);
setLayout(new FlowLayout());
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
そして、私はそれがエラーを下回る得る最大化するために、3つのライン(とか、すでにAppFrameから来ているのsetVisible、なし)の上に配置しようとするときAppFrameを拡張するクラスで:として
Exception in thread "main" java.awt.IllegalComponentStateException: The frame is displayable. at java.awt.Frame.setUndecorated(Frame.java:923)
(私が検証したい)解決策の一部 - 実験的にAppFrame.javaからsetVisible(true)を削除したところ、AppFrameを拡張しているすべてのクラスに影響が出るので、私のクラスからframe.setUndecorated(true);
も削除してsetVisible AppFrameで。そして例外はなくなりました。またframe.setUndecorated(true);
私はJFrameのタイトルバーを削除すると思います。また、以下の
はJFrameのののjavadocからの抜粋です:
A frame may have its native decorations (i.e. Frame and Titlebar) turned off with setUndecorated. This can only be done while the frame is not displayable.
誰かがこの動作を確認することができればそれは素晴らしいことです。
私はあなたが確認したいものがわかりません。ドキュメントはかなり明確です。 – MadProgrammer
* "AppFrame.javaからsetVisible(true)を削除しました"これは良いことだと主張するでしょう。なぜなら、いつAppFrameが可視にすべきかについての判断を下すべきではないということです。これは、子クラスに最も近い実装の詳細です。 – MadProgrammer
ウィンドウを最大化したい場合['setExtendedState'](https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html#setExtendedState-int-) – MadProgrammer