Jpanel
にはJInternalFrame
の一部があります。 JPanel
はgridlayoutです。コンテナ内でJInternalFrame
を1つだけ選択する必要があります(JPanel
)。 JInternalFrame
インスタンスを動的に作成し、パネルに追加しました。私はまだJInternalFrame
のリストを持っていますが、1つだけを選択して選択する方法はあります。コンテナ内の複数のJInternalFrameの選択(JPanel)
0
A
答えて
3
How to Use Internal Framesで示唆されているように、「通常、デスクトップペインに内部フレームを追加します。これにより、activateFrame()
を使用して、フレームにフォーカスがあることを示すことができます。このexampleでは、メニューからsetSelected()
を介してフレームを選択するのにjavax.swing.Action
が使用されます。追加の議論は、Q&Aにあります。
補足:JPanel
を使用する場合は、恐らくGridLayout
を入手するには、次のようにInternalFrameListener
を使用します。
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.beans.PropertyVetoException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
/** @see https://stackoverflow.com/questions/8389640 */
public class InternalGrid extends JPanel {
private final List<MyFrame> list = new ArrayList<MyFrame>();
public InternalGrid() {
super(new GridLayout(2, 2));
for (int i = 0; i < 4; i++) {
MyFrame f = new MyFrame("Frame", i);
list.add(f);
this.add(f);
}
}
private void display() {
JFrame f = new JFrame("InternalGrid");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(this);
f.pack();
f.setSize(320, 240);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new InternalGrid().display();
}
});
}
class MyFrame extends JInternalFrame {
MyFrame(String name, int i) {
super(name + String.valueOf(i), true, true, true, false);
this.pack();
this.setVisible(true);
this.setLayout(new FlowLayout());
this.add(new JLabel("Hi, I'm " + this.getTitle()));
this.addInternalFrameListener(new InternalFrameAdapter() {
@Override
public void internalFrameActivated(InternalFrameEvent e) {
for (MyFrame f : list) {
if (f != MyFrame.this) {
try {
f.setSelected(false);
} catch (PropertyVetoException ex) {
System.out.println(ex);
}
}
}
}
});
}
}
}
関連する問題
- 1. Java JInternalFrame to JPanel
- 2. JPanelからJInternalFrameを隠す
- 3. Ember.jsテーブル内の複数の選択
- 4. テーブル内で複数の列を選択
- 5. 複数選択の内容を表示
- 6. jquery複数選択して特定のコンテナに表示
- 7. 複数回答の複数選択での選択PHP
- 8. リスト選択デフォルトの複数選択
- 9. Struts複数選択ボックスの選択
- 10. JavaのJInternalFrameのJTabbedPane上のJPanelのサイズを設定する
- 11. 他の複数選択ドロップダウンに基づく複数選択ドロップダウン
- 12. 複数選択後の複数選択要素
- 13. 選択オプションの選択複数選択オプションのデータ属性
- 14. ピボットテーブルの複数の選択
- 15. 背面のJPanel親を選択
- 16. コンテナ - 複数のコンテナ
- 17. 複数の複数選択ドロップダウン
- 18. 選択2複数選択デフォルトの選択
- 19. 複数選択
- 20. 複数選択
- 21. 複数のファイル選択ダイアログ
- 22. Chosen.js複数の選択肢
- 23. Sitecoreの複数選択ドロップダウンリスト
- 24. WinFormsでの複数選択
- 25. 複数選択jsfのカレンダー
- 26. ASP.NETの複数選択ドロップダウンリスト
- 27. 複数のウィジェットを選択
- 28. モデル複数の選択肢
- 29. 複数のエントリーを選択
- 30. symfonyの:複数選択
ウル返事をUに感謝しかし、私はここでのJPanelで使用する状況があります。しかし、 – Pratap
ゴミ箱は正しいです。親JPanelをJDesktopPaneで置き換えるか、他に誰も使用していないケースがあります。すべてのJInternalFrameをそれ自身のJDesktopPaneに配置し、選択変更プロセスで以前に選択したものを配置することができます。 –
@Joopは良い点を挙げています。例えば、 'iconifiable'はデスクトップペインの外では無意味になります。コードと画像が更新されました。 – trashgod