2

私の問題は、プロジェクトの(私にとって)より複雑なグラフィカルインターフェイスを作成したいということです。まず第一に、私は以下のコードでフルスクリーンモードを使用しています:

public class MainFrame extends JFrame
{
...
private Container container;
private GridBagLayout gbl;

public MainFrame()
{
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice dev = env.getDefaultScreenDevice();
dev.setFullScreenWindow(this);
setLayoutManager();
}
...
}

そして、すべてが大丈夫です。次のステップは、2つのJPanelを追加することです。使用したいレイアウトマネージャーはGridBagLayoutです。

private void setLayoutManager()
{
container = getContentPane();
gbl = new GridBagLayout();
container.setLayout(gbl);
}

private void addMenu()
{
MenuBar menu = new MenuBar();
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.ipady = 0;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 1.0;
gbc.weighty = 0.05;
gbl.setConstraints(menu, gbc);
container.add(menu);
}

private void addWorkArea()
{
WorkArea area = new WorkArea();
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.gridy = 1;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbl.setConstraints(area, gbc);
container.add(area);
}

そして、結果は次のようになります。

ここに画像の説明を入力してください

これが私のプロジェクトです:

なぜ上部にストリップがあるのですか?

さらに、そこをクリックしてドラッグすると、すべてのアプリケーションが移動します。私を助けてください。JFrameの移動をなくすために、すべてのスペースを埋めることが重要です。

4

1 に答える 1

3

何が問題なのかと言うと、あなたは笑うでしょう...

Java は、何らかの理由で、コンテンツをレイアウトするときにフレームの挿入を許可しています。つまり、まだタイトル バーとフレーム ボーダーがあると認識しています。

修正は非常に複雑ですが...

MainFrameコンストラクターでは、setUndecorated(true)他のことを行う前に呼び出す必要があります...

public MainFrame() {
    setUndecorated(true); // <-- Add me
    setFullScreen();
    setResizable(false);
    setTitle("Program");
    setLayoutManager();
    addMenu();
    addWorkArea();
}

私は知っています、恐ろしく複雑です(皮肉を挿入してください:P-真剣に、それが機能したときは自分自身に驚きました)

于 2012-09-07T01:55:16.127 に答える