Hello Swing !!

ラベルとボタン(JLabel & JButton)

2004/7/26


JFrameを使って、「何もない・何もしない」アプリケーションをつくりました。もうすこし手を加えて、役に立ちそうなものにしましょう。
せっかくつくったアプリケーションですが、ソースを見ると

となっている。このプログラムが悪いとは言うつもりはないし、いろいろなサンプルを見るとこのような形式をとるものが大変多い。
しかし、すべてをHello_Swingクラスに記述しているということは、

ということである。よって、ものとプログラムを2つのクラスに分割する。

  1. アプリケーション本体を掌る「Hello_Swingクラス」
  2. フレームを掌る「Frameクラス」
    複数のフレームが登場する場合を想定し、Framexxクラス(xx=1,2,3,...)とする。

では、この方針に従い、Hello_Swingを改造しよう。

  1. もとのHello_SwingクラスはHello_Swing.javaというファイルに記述されている。これをこのように修正しよう。
    この形は、「Hello Eclipse !! (Application)」でつくった、シンプルなアプリケーションに似ている。
    最初につくったframe1.setVisible()等は削除する。代わりにFrame1というクラスを宣言している。
    /*
     * 作成日: 2004/07/16
     *
     * この生成されたコメントの挿入されるテンプレートを変更するため
     * ウィンドウ > 設定 > Java > コード生成 > コードとコメント
     */
    
    /**
     * @author j00300
     *
     * この生成されたコメントの挿入されるテンプレートを変更するため
     * ウィンドウ > 設定 > Java > コード生成 > コードとコメント
     */
    import javax.swing.*;
    public class Hello_Swing {
    
            public static void main(String[] args) {
                    try{
                            Frame1 frame1 = new Frame1() ;
                            frame1.setLocation(200,200);
    
                            frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        //Windowを閉じるときの処理
                          //frame1.setDefaultCloseOperation(3); でもよい。このときは"import javax.swing.*;"は不要
                    }
                    catch(Exception e){
                            e.printStackTrace();
                    }
            }
    }

  2. JFrameに関するクラスを新しく作らなければならない。メニューから[ファイル]-[新規]-[クラス]を選択を選択します。
    最終的に、このようなソースプログラムにする。
    メソッド 機能
    Frame1() Frame1のコンストラクタ
    実体はjInit()に記述
    jInit() Frame1の初期化
    ラベルやボタンを追加している

    //import javax.swing.JFrame;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    /*
     * 作成日: 2004/07/16
     *
     * この生成されたコメントの挿入されるテンプレートを変更するため
     * ウィンドウ > 設定 > Java > コード生成 > コードとコメント
     */
    
    /**
     * @author j00300
     *
     * この生成されたコメントの挿入されるテンプレートを変更するため
     * ウィンドウ > 設定 > Java > コード生成 > コードとコメント
     */
    public class Frame1 extends JFrame {
            JPanel contentPane;
            JLabel jLabel1 = new JLabel() ;
            JButton jButton1 = new JButton() ;
            
            public Frame1(){
                    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
                    try{
                            jInit() ;
                    }
                    catch(Exception e){
                            e.printStackTrace();
                    }
            }
            
    
          
            private void jInit(){
                    //Frameをつくる
                    contentPane = (JPanel) this.getContentPane();
                    this.setSize(400,300);
                    this.setTitle("Hello Swing");
                    contentPane.setLayout(null);
                    
                    //JLabelをつかう
                    jLabel1.setText("Label1");
                    jLabel1.setBounds(20,20,120,30);
                    jLabel1.setForeground(Color.GREEN);
                    jLabel1.setBackground(new Color(128,0,128));
                    jLabel1.setOpaque(true);
                    contentPane.add(jLabel1);
                    
                    //JButtonをつかう
                    jButton1.setText("Touch Me!!");
                    jButton1.setBounds(20,60,120,30);
                    
                    contentPane.add(jButton1);
    
                    //最後にFrame全体を表示
                    this.setVisible(true);
            }
    }

  3. これで実行ボタンを押すと、ラベルとボタンがついたフレームが表示される。

  4. 以降、フレームに関することはFrame1.javaに記述していく。
    次は、テキストフィールドとテキストエリア(JTextField & JTextArea)を追加する。

すべての基本JFrame テキストフィールドとテキストエリア(JTextField & JTextArea)