←フエルチラシノウラ。トップページへもどる。

Java+SwingでGUIアプリを作るためのテンプレート(GridLayoutレイアウト編)

Java Swing GUI 開発 プログラミング Layout レイアウト

Java+SwingでGUIアプリを作るためのテンプレート(GridLayout編)
以下のようなWindowアプリを作ってみます。
container
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
|     panel1        |
| | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| |              | |
| |   textArea       | |
| |              | |
| |              | |
| |              | |
| |              | |
|  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
|     panel2        |
| | ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄| |
| |button1.|button2.|button3.| |
| |    |    |    | |
|  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

package test;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public class Test extends JFrame implements ActionListener {
  /** コンポーネントの宣言 */
 private JPanel panel1;
  private JTextArea textArea;
 private JPanel panel2;
  private JButton button1;
  private JButton button2;
  private JButton button3;
  /** コンポーネントのサイズ */
  // frameの高さと幅のサイズ
  private static final int FRAME_HEIGHT  = 330;
 private static final int FRAME_WIDTH  = 310;
  // containerの高さと幅のサイズ
  private static final int CONTAINER_HEIGHT  = 310;
 private static final int CONTAINER_WIDTH  = 310;
  // panel1の高さと幅のサイズ
 private static final int PANEL1_HEIGHT  = 250;
  private static final int PANEL1_WIDTH  = 300;
 // panel2の高さと幅のサイズ
 private static final int PANEL2_HEIGHT  = 50;
 private static final int PANEL2_WIDTH  = 300;
 /** その他 */
  // タイトル
  private static final String FRAME_TITLE  = "タイトルです。";
 
  /**
  * コンストラクタ
 */
 public Test() {
   // タイトルバーの侮ヲ
   setTitle(FRAME_TITLE);
    // Windowの大きさ
    setBounds( 0, 0, FRAME_WIDTH, FRAME_HEIGHT);
    // 終了処理を実装
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   // 外観をWindows風に設定
    try {
     UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
     SwingUtilities.updateComponentTreeUI(this);
   } catch (Exception e) {
     e.printStackTrace();
    }
   
    // Containerを生成(デザインの自由度が高いnullLayoutを使います。)
   Container container = getContentPane();
   container.setLayout(null);
    container.setBounds(0, 0, CONTAINER_WIDTH, CONTAINER_HEIGHT);

   // TextArea用のPanelを生成
    panel1 = new JPanel(new GridLayout(1,1));
    panel1.setBounds(0, 0, PANEL1_WIDTH, PANEL1_HEIGHT);
    // TextAreaを生成
   textArea = new JTextArea();
   textArea.setBounds(panel1.getVisibleRect());
    // TextAreaをPanelに唐阨tけ
   panel1.add(new JScrollPane(textArea));
    // ContainerにPanelを唐阨tける
   container.add(panel1);
    
    // Button用のPanelを生成
    panel2 = new JPanel(new GridLayout(1,3));
    panel2.setBounds(0, PANEL1_HEIGHT, PANEL2_WIDTH, PANEL2_HEIGHT);
    // buttonを生成
   button1 = new JButton("button1");
   button2 = new JButton("button2");
   button3 = new JButton("button3");
   // PanelにButtonを唐閧ツける
    panel2.add(button1);
    panel2.add(button2);
    panel2.add(button3);
    // ContainerにPanelを唐阨tける
   container.add(panel2);    

    // ボタンにアクションリスナーを付加
    button1.addActionListener(this);
    button2.addActionListener(this);
    button3.addActionListener(this);

    // 侮ヲ
    setVisible(true);
 }

 /**
  * メイン
 */
 public static void main(String[] args){
   Test test = new Test();
   // サブコンポーネントの推奨サイズおよびレイアウトに合わせてこの Window をサイズ変更するように設定
   //test.pack();
 }

 /**
  * ボタンなどが押されたときのアクション
  */
 public void actionPerformed(ActionEvent ae) {
   //ここにボタンが押されたときの処理を実装します。
    System.out.println(ae.getSource().toString());
    if (ae.getSource() == button1) {
      textArea.setText("button1が押されました。");
    } else if(ae.getSource() == button2) {
      textArea.setText("button2が押されました。");
    } else if (ae.getSource() == button3) {
     textArea.setText("button3が押されました。");
    }
 }
}


Frameにコンポーネントを唐阨tける手順

     
  1. JFrame.getContentPane() で Container を取得する。  
  2. ContainerのLayout(レイアウト)を決定する。  
  3. ContainerのBounds(位置とサイズ)を決定する。  
  4. Panelを生成する。  
  5. PanelのLayout(レイアウト)を決定する。  
  6. PanelのBounds(位置とサイズ)を決定する。  
  7. Buttonなどのコンポーネントを生成する。  
  8. PanelにButtonなどのコンポーネントをaddする。  
  9. ContainerにPanelをaddする。

GridLayoutレイアウトについて

new GridLayout(1,1)  このレイアウトは縦横1x1のセルを持っています。  以下のようにパネルを配置します。  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |              |  |              |   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ new GridLayout(1,3)  このレイアウトは縦横1x3のセルを持っています。  以下のようにパネルを配置します。  | ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|  |    |    |     |  |    |    |     |   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

http://goodjob.boy.jp/chirashinoura/id/46.html

作成日: 2005-11-20 02:03:11

最終更新日: 2005-11-20 15:42:24

▲このページの上へ