7

ユーザーがメニューからさまざまな機能を開くことを選択したので、私はたくさんのJInternalFramesをに追加しています。JDesktopPaneただし、内部フレームは、デフォルトのように見える左上ではなく、デスクトップペインの中央で開くようにします。

JInternalFrameが中央で開くように指定したり、開いた後に中央に移動したりするにはどうすればよいですか?

jDesktopPane.add(jInternalFrame); // jInternalFrame is not centered!
4

5 に答える 5

15

参考までに、dogbaneのアドバイスに基づいて、私が使用したソリューションは次のとおりです。

Dimension desktopSize = desktopPane.getSize();
Dimension jInternalFrameSize = jInternalFrame.getSize();
jInternalFrame.setLocation((desktopSize.width - jInternalFrameSize.width)/2,
    (desktopSize.height- jInternalFrameSize.height)/2);
于 2011-09-21T15:56:09.620 に答える
4

JDesktopPane(とのサイズに基づいて)新しい場所の左上隅を調べてから、JInternalFrameを呼び出しますJInternalFrame.setLocation

于 2011-09-20T17:11:42.560 に答える
1

Netbeans(デスクトップアプリに推奨)を使用している場合は、次のことを行う必要があります。

  1. フォームを選択し、右クリックしてからプロパティを選択します。
  2. コードタブに移動します。
  3. 「フォームサイズポリシー」を「GeneratePack()」から「GenerateResizeCode」に変更します。
  4. フォームの位置(フォームサイズポリシーの上のオプション)が利用可能になります。

今、あなたはあなたが望むように位置を設定することができます:)

于 2018-12-23T20:45:20.993 に答える
0

Window.setLocationRelativeTo(Component)メソッドをお勧めします。このメソッドは、指定されたコンポーネントを基準にしてウィンドウを中央に配置します。JDesktopPaneを渡す代わりに、コンポーネントの親フレームを取得することをお勧めします。そうしないと、渡したコンポーネントに応じてJInternalFrameが中央に配置されます。

コードサンプルは次のとおりです。

private void showDialog(Dialog dialogToCenter, Component button) {
    Frame frame = JOptionPane.getFrameForComponent(button);
    dialogToCenter.setLocationRelativeTo(frame);
    dialogToCenter.setVisible(true);
}
于 2011-09-20T17:50:07.703 に答える
0

このボイドを追加

public void addCentered(Component jif) {        
    desktopPane.add(jif);
    jif.setLocation((desktopPane.getWidth()-jif.getWidth())/2, (desktopPane.getHeight()-jif.getHeight())/2);
    jif.setVisible(true);
}

jInternalFrame呼び出しを追加する場合:

addCentered(jifName);
于 2020-02-08T23:48:30.983 に答える