ウィンドウ
Swing のウィンドウ
Swing において、単純なウィンドウはピアを作成します
原則として AWT の Window と変わりませんが、ルートペインを保有し
コンポーネントの管理体制が Swing の構造である点で大きく異なります
Swing のウィンドウは javax.swing.JWindow クラスで表します
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--java.awt.Window
|
+--javax.swing.JWindow
public class JWindow extends Window
implements Accessible, RootPaneContainer
ウィンドウはシステムの機能を呼び出しピアを作成しますが
フレームとは異なり、アイコンやタイトルバーなどは一切サポートしていません
JWindow クラスは次のようなコンストラクタを公開しています
public JWindow()
public JWindow(GraphicsConfiguration gc)
public JWindow(Frame owner)
public JWindow(Window owner)
public JWindow(Window owner , GraphicsConfiguration gc)
gc には、スクリーンデバイスの GraphicsConfiguration を
owner はウィンドウを表示するオーナーウィンドウ、またはフレームを指定します
JWindow クラスは重量なので JComponent クラスを継承していません
しかし JWindow.getRootPane() や JWindow.getContentPane() メソッドで
デフォルトで設定されているルートペインやコンテンツペインを取得できます
これらを新しく設定するための set_() メソッドも用意されています
protected void setRootPane(JRootPane root)
public void setContentPane(Container contentPane)
public JRootPane getRootPane()
public Container getContentPane()
root にはルートペイン、contentPane にはコンテンツペインを指定します
setRootPane() は公開されていないので、サブクラスからの呼び出しとなります
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test {
public static void main(String args[]) {
JWindow window = new JWindow();
ImageIcon icon = new ImageIcon("test.jpg");
JLabel label = new JLabel(icon);
window.setSize(icon.getIconWidth() , icon.getIconHeight());
window.setLocation(100 , 100);
window.getContentPane().add(label);
window.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.exit(0);
}
});
window.show();
}
}
このプログラムは、ラベルを保有する Swing のウィンドウを表示しています
ラベルは、アイコンを表示しているだけです
ウィンドウはアイコンのサイズに合わせて作成されています