ウィンドウ


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 のウィンドウを表示しています
ラベルは、アイコンを表示しているだけです
ウィンドウはアイコンのサイズに合わせて作成されています



前のページへ戻る次のページへ