ラベル Javaサンプルソース の投稿を表示しています。 すべての投稿を表示
ラベル Javaサンプルソース の投稿を表示しています。 すべての投稿を表示

2011年8月1日月曜日

フレームにタイトルを表示させる(Java)

【5-1】AWTの場合①
import java.awt.Frame;
import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Main {
    public static void main(String[] args){
        Gui frame = new Gui("初めての超〜GUI基礎5回目");
        frame.setSize(500, 300);
        frame.setBackground(Color.red);
        frame.setVisible(true);
    }
}

class Gui extends Frame{
    private static final long serialVersionUID = 1L;
    public Gui(String string){
           setTitle(string);
           addWindowListener(new WindowAdapter(){
                  public void windowClosing(WindowEvent we){
                      System.exit(0);
             }
           });
    }
}
【5-2】AWTの場合②
mport java.awt.Frame;
import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Main {
    public static void main(String[] args){
        Gui frame = new Gui();
        frame.setSize(500, 300);
        frame.setBackground(Color.red);
        frame.setVisible(true);
    }
}

class Gui extends Frame{
    private static final long serialVersionUID = 1L;
    public Gui(){
           setTitle("初めての超〜GUI基礎5回目");
           addWindowListener(new WindowAdapter(){
                  public void windowClosing(WindowEvent we){
                      System.exit(0);
             }
           });
    }
}

※①と②の違いは、クラスの使いまわしができるか、できないかの差かな~!?ということは、①が良いでしょう。

【5-3】Swingの場合①
import javax.swing.JFrame;
import java.awt.Color;
public class Main {
    public static void main(String[] args){
        Gui frame = new Gui("初めての超〜GUI基礎5回目");
        frame.setVisible(true);
    }
}
class Gui extends JFrame{
    private static final long serialVersionUID = 1L;
    public Gui(String string){
        setTitle(string);
        setSize(500, 300);
        getContentPane().setBackground(Color.red);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

【5-4】Swingの場合②
import javax.swing.JFrame;
import java.awt.Color;
public class Main {
    public static void main(String[] args){
        Gui frame = new Gui();
        frame.setVisible(true);
    }
}
class Gui extends JFrame{
    private static final long serialVersionUID = 1L;
    public Gui(){
        setTitle("初めての超〜GUI基礎5回目");
        setSize(500, 300);
        getContentPane().setBackground(Color.red);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

※基本、AWTの場合と同じだね。Swingの方がプログラムを閉じるAdapterクラスがないのでスッキリしたコードになっている。
【実行結果】




【解説】
上記から”AWT”ができることは、Swingでもできることがわかる。

フレーム内の背景色を変更または指定する(Java)

【4-1】 AWTの場合
import java.awt.Frame;
import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Main {
    public static void main(String[] args){
        Gui frame = new Gui();
        frame.setSize(500, 300);
        frame.setBackground(Color.red); // フレーム内の背景色変更
        frame.setVisible(true);
    }
}

class Gui extends Frame{
    public Gui(){
           addWindowListener(new WindowAdapter(){
                  public void windowClosing(WindowEvent we){
                      System.exit(0);
             }
           });
    }
}
【4-2】Swingの場合①
import javax.swing.JFrame;
import java.awt.Color;
public class Main {
    public static void main(String[] args){
        Gui frame = new Gui();
        frame.setVisible(true);
    }
}
class Gui extends JFrame{
    public Gui(){
        setSize(500, 300);
        getContentPane().setBackground(Color.red);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

【4-3】Swingの場合②
import java.awt.Color;
import javax.swing.JFrame;

public class Sample extends JFrame{
    private static final long serialVersionUID = 1L;
    public static void main(String[] args){
        new Sample();
    }

    Sample(){
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(500, 300);
        this.getContentPane().setBackground(Color.RED);
        this.setVisible(true);
    }
}

【実行結果】


【環境】
Mac/Win
【解説】
setBackground(Color.(色を指定))   
で背景の設定色を指定できます。

黒black または、BLACK
青blue または、BLUE
シアンcyan または、CYAN
ダークグレイ DARK_GRAY または、darkGray
グレイ gray または、GRAY
緑 green または、GREEN
ライトグレイ LIGHT_GRAY または、lightGray
マゼンダ magenta または、MAGENTA
オレンジ orange または、ORANGE
ピンク pink または、PINK
赤 red または、RED
白 white または、WHITE
黄色 yellow または、YELLOW 

フレームを閉じると同時にプログラムを終了させる(Java)

【3-1】
import javax.swing.JFrame;
public class Main {
    public static void main(String[] args){
       JFrame frame = new JFrame(); 
  //フレームを閉じるとプログラムも終了です。
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setSize(500, 300);
       frame.setVisible(true);
    }
}
 【実行結果】


【環境】
Macで動くEclipse上
(Windowsでは少し変わるけど、実行結果は同じ)
【解説】
あれっ、前回と同じ・・・?
はい、見た目は全く同じです。
違いは,ウィンドウを閉じた時のプログラムの状態。

今回は,ウィンドウフレームを閉じると同時にプログラムも終了させます。

今回のソースを追加しないと,ウィンドウフレームを閉じても裏でプログラムが動き続けています。だから,
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 上記のソースは,忘れずに追加しておきましょう。

注:追加しないプログラム(例,2回目で紹介したサンプルソース_2)は,ウィンドウを閉じても,裏でプログラムは動き続けています。実行を繰り返すと,複数のプログラムが動いた状態になってます。注意が必要だ!!

以上のようにswingの場合は1行で済むのですが、AWTの場合はちょっと煩雑なんだよね。
使う機会は減ってきているとはいえ、過去のプログラム資産を見るためには頭の片隅にでも置く必要がありそうなので記述していきます。

Adapterクラスを使用した基本例
【3-2】
import java.awt.Frame;
import java.awt.event.*;

public class Test {
    public static void main(String[] args){
       Gui frame = new Gui();
       frame.setSize(500, 300);
       frame.setVisible(true);
    }
}
class Gui extends Frame{
    public Gui(){
           WClose wc = new WClose();
           addWindowListener(wc);
    }
}
class WClose extends WindowAdapter {
      public void windowClosing(WindowEvent we){
               System.exit(0);
      }
}

Adapterクラスを内部クラスを利用した応用例

【3-2】
import java.awt.Frame;
import java.awt.event.*;

public class Test {
    public static void main(String[] args){
       Gui frame = new Gui();
       frame.setSize(500, 300);
       frame.setVisible(true);
    }
}
class Gui extends Frame{
    public Gui(){
           addWindowListener(new WindowAdapter(){
                  public void windowClosing(WindowEvent we){
                      System.exit(0);
             }
           });
    }
}

2011年7月31日日曜日

フレームのサイズを設定します(Java)

【2-1】
import javax.swing.JFrame;
public class Main {
    public static void main(String[] args){
        JFrame frame = new JFrame();
        frame.setSize(500, 300); //setSize( 横サイズ ,縦サイズ )
        frame.setVisible(true);
    }
}
 【実行結果】


【環境】
Macで動くEclipse上
(windowsでは少し変わるけど、実行結果は同じ)
【解説】
フレームのサイズを設定しました。
ちなみに,数値の単位は”ピクセル”です。
数値を変えて,実行結果の変化を確かめよう。

【2-2】
import java.awt.Frame;
public class Test extends Frame{
    public static void main(String[] args){
        Frame test = new Frame();
        test.setSize(300, 300);
        test.setVisible(true);
    }
}

ウィンドウフレームを作って、表示するだけ。(Java)

【1-1】
import javax.swing.JFrame; //swingパッケージ,JFrame必須
public class Main {
    public static void main(String[] args){
        JFrame frame = new JFrame();  //ウィンドウフレームを作成
        frame.setVisible(true);    //表示(true),非表示(false)
    }
}
 【実行結果】
【環境】
Macで動くEclipse上
(windowsでは少し変わるけど、実行結果は同じ)
【解説】
ボタンも何もありません,フレームだけ。
サイズも何も指定してないので,デフォルト(初期設定)表示。

他にもフレームを表示する方法があります。実はこちらが元祖。
まずは,ソースを見てください。
【1-2】
 import java.awt.Frame;
public class Main {
    public static void main(String[] args) {
        Frame frame = new Frame();
        frame.setVisible(true);
    }
}
【解説】
違う箇所を青色で表現しました。
Frameの前に"J"が無くなってますね。
しかも、インポートするパッケージが”・・・awt.Frame” になってます。
先ほども、アナウンスしたけど、こちらが実は元祖です。
JavaのGUIは,この元祖のAWT から始まってます。
しかしながら,時代とともに,プログラマーが求めているものを満たすには不十分だった為、バージョンアップ版?というのかも知れないが,Swing が用意され,細かい設定が可能になってます。
しかし,まったく別物ではなく,AWTの土台の元にSwingが作られている。
内容の説明は,省略。
今後の説明でも,AWT とか,Swingとか、混ざったサンプルソースがでてきますが,『気にせずに』にどんどん、書いて覚えていくのがプログラミング向上の近道だと個人的に思います。もちろん,たまには立ち止まって,良書をじっくり読む事も忘れずに。