画面解像度を得る
解像度と位置
ここでは、アプリケーションの生成に非常に重要な画面解像度の取得を覚えましょう
アプリケーションでフレームのないウィンドウを作成したり
画面解像度に依存する動作を必要とする場合は、そのコンピュータの画面解像度を知る必要があります
画面解像度を得るアプリケーションの代表例としては
画像ビューワで、最大画面サイズで画像を表示する場合
画面解像度を得て、それに合わせてイメージを拡大縮小する必要がありますね
画面解像度の取得にはjava.awt.Toolkitクラスを使用します
このクラスは、非プラットフォーム依存クラスとネイティブなピアとの橋渡し的クラスで
この他にも、アプリケーション作成などでこのクラスを利用することがあります
通常は直接呼び出すことはなく、ComponentクラスのgetToolkit()からオブジェクトを得ます
public Toolkit getToolkit()
このメソッドは、コンポーネントのツールキットを返します
画面解像度を得るにはToolkitクラスのgetScreenSize()メソッドを使用します
public abstract Dimension getScreenSize()
このメソッドはピクセル単位の画面サイズをDimensionオブジェクトで返します
ここで得られたDimensionオブジェクトのwidthとheightに画面サイズが入ります
ためしに、得られた解像度を利用して、画面の中央にウィンドウを表示させるアプレットを作成しましょう
コンポーネントを指定位置(正確には親コンポーネントの)に表示するには
ComponentクラスのsetLocation()メソッドを利用します
public void setLocation( int x, int y )
public void setLocation( Point p )
xはx座標、yはy座標を指定します
pには、表示する座標を表すPointオブジェクトを指定します
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
/* <applet code="App55.class" width="300"height="300">
</applet>
*/
public class App55 extends Applet implements ActionListener {
Toolkit tk = getToolkit();
Dimension dim;
Frame win;
public void init() {
setBackground(Color.white);
dim = tk.getScreenSize();
Button but = (Button)add(new Button("フレーム"));
but.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == "閉じる") {
win.dispose();
return;
}
if (win == null) win = new Frame("Kitty on your lap");
win.setSize(400 , 400);
win.setLocation(dim.width / 2 - 200 , dim.height / 2 - 200);
Button but = (Button)win.add(new Button("閉じる"));
but.addActionListener(this);
win.setVisible(true);
}
}
ボタンを押すとフレームが生成されます
生成されたフレームはsetLocation()メソッドにより、必ず中央に表示されます
当然、画面解像度を得て算術しているため、解像度に依存することはありません
コンポーネントなどのコントロールを全体の中央に表示させるアルゴリズムは
( 全体 / 2 ) - ( コンポーネント / 2 ) で中央に表示されます