JInternalFrameのアイコン化可能/最小化機能を使用してフレームを折りたたむだけでなく、親コンポーネント内でJInternalFrameの位置を維持する必要があります。現在、JInternalFrameのminimizeボタンを押すと、コンポーネントのコンテナの下部にコンポーネントが配置されます。最小限に抑えながら場所を維持する方法はありますか?明白な解決策がない場合、どのように私はiconableアイコンを観察し、デフォルトのリスナーを削除することができますか?ありがとうございました。JInternalFrameは現在の位置を維持しながら最小化します
2
A
答えて
4
この動作を変更するには、javax.swing.DesktopManager
の実装を作成するとよいでしょう。既に利用可能な既定の動作の大部分を取得するには、javax.swing.DefaultDesktopManager
のサブクラス化をお勧めします。
DefaultDesktopManagerでは、メソッドiconifyFrame(JInternalFrame f)
は完全な動作を制御しますが、内部的にはメソッドprotected Rectangle getBoundsForIconOf(JInternalFrame f)
を使用して、最小化されるフレームのアイコンの境界を決定します。ここでは、使用したい内部フレームのアイコンの境界を返すことができます。問題はそれらの値がキャッシュされているので、次のようなことをする必要があるたびに移動したい場合です。念のため
import javax.swing.DefaultDesktopManager;
import javax.swing.DesktopManager;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import java.awt.Dimension;
public class CustomDesktopManager extends DefaultDesktopManager {
@Override
public void iconifyFrame(JInternalFrame f) {
super.iconifyFrame(f);
JInternalFrame.JDesktopIcon icon = f.getDesktopIcon();
Dimension prefSize = icon.getPreferredSize();
icon.setBounds(f.getX(), f.getY(), prefSize.width, prefSize.height);
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JDesktopPane desktopPane = new JDesktopPane();
DesktopManager dm = new CustomDesktopManager();
desktopPane.setDesktopManager(dm);
JInternalFrame internalFrame = new JInternalFrame("Test Internal Frame", true, false, true, true);
internalFrame.setSize(200, 150);
internalFrame.setVisible(true);
desktopPane.add(internalFrame);
frame.add(desktopPane, BorderLayout.CENTER);
frame.setSize(800, 600);
frame.setVisible(true);
}
});
}
}
0
、もしあなたは、単にそれがあなたのJInternalFrameのinternalFrameIconified()イベントを通じてで実現するために、アイコンの位置やサイズ、他の方法を変更されて欲しいもの:
public void internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
JInternalFrame.JDesktopIcon icon = myInternalFrame.getDesktopIcon();
icon.setSize(new Dimension(200,icon.getSize().height)); //Change icon width to 200
icon.setLocation(x,y); //You can calculate its position as you wish (not implemented here).
}
この方法DefaultDesktopManagerを拡張することなく、各JInternalFrame(またはJInternalFrameタイプ)に対して独立してルールを設定できます。しかし、あなたが望むものが一般にすべてのJInternalFramesに影響を与えることであれば、Joshuaの推奨に従うことを強くお勧めします。
関連する問題
- 1. JInternalFrameの最大化と最小化
- 2. Website Redesign現在のGoogle検索の位置を維持する
- 3. RecyclerViewページ位置がスクロール位置を維持していない
- 4. 位置を維持しながらShiny DataTableの行を更新
- 5. ListViewでスクロール位置を維持しながらSimpleCursorAdapterを更新します。
- 6. ファイル構造を維持しながら現在のディレクトリで解凍します
- 7. iphone sdkの現在の位置から最小の位置を取得した後にtableviewを再配置する方法はありますか?
- 8. JInternalFrameのフォーカスを維持する
- 9. リッチテキストボックスコントロールから現在のスクロール位置を取得しますか?
- 10. jqueryはモーダルダイアログのスクロール位置を維持します
- 11. カーソルの下の現在の列を維持しながらvimでファイルの最後に移動するには?
- 12. function minMax(items){items.reduce([最小、現在)最小<現在?最小:現在)};
- 13. 系統樹の位置を維持しながらチップラベルでクレードを縮める
- 14. PHPはスクロール位置を維持します
- 15. 現在の位置ピンをアンドロイドの地図から削除する方法、他のピンを維持する
- 16. 非最小位置で収束するL1-正規化システムの最小化?
- 17. Java Swingで[Esc]キーを使用してJInternalFrameを最小化する方法は?
- 18. クエリが、最小の日付を維持
- 19. 元の位置オフセットを維持したままのテキスト操作
- 20. 下部(Y)位置を維持しながら形状トゥイーン/変形?
- 21. ポストバック全体でビデオの位置を維持しますか?
- 22. リストはスクロール位置を維持しません
- 23. MKMapView:現在のズームレベルを現在の位置に従います
- 24. "最小化"コントロールを維持しながらVB6でフォームのサイズ変更を無効にする
- 25. ListViewの位置を維持する
- 26. ラッピングブロックの位置を維持する
- 27. ラベルのスクロールバー位置を維持する
- 28. FusedLocationProviderApiの現在のGPS位置が正しくない
- 29. バーの位置ラベルを移動して、画面を最大化/最小化します(C3.js - D3.js内)。
- 30. UITextViewで最初の行を現在のカーソル位置にしますか?
あなたは私の人生の時間を節約しました。ありがとうございました。 –