Javaプログラミング/サーバサイド&ケータイJava

Visual Editorを使おう(6ページ目)

GUI利用アプリケーションを作るなら、Visual Editorは必須! 今すぐインストールして使いましょう。

執筆者:掌田 津耶乃

自動生成されたソースコード


では、先ほど作成したGUIの画面がどのようなソースコードになっているか、調べてみることにしましょう。VEFrame.javaのソースコードを以下にあげておきます。(一部、コメント類は省略してあります)

package jp.tuyano.vetest;

import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;

public class VEFrame extends JFrame {

  private static final long serialVersionUID = 1L;
  private JPanel jContentPane = null;
  private JLabel jLabel = null;
  private JButton jButton = null;

  private JButton getJButton() {
    if (jButton == null) {
      jButton = new JButton();
      jButton.setText("Click");
      jButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          System.out.println("actionPerformed()"); // TODO
        }
      });
    }
    return jButton;
  }

  public static void main(String[] args) {
    // TODO 自動生成されたメソッド・スタブ
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        VEFrame thisClass = new VEFrame();
        thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        thisClass.setVisible(true);
      }
    });
  }

  public VEFrame() {
    super();
    initialize();
  }

  private void initialize() {
    this.setSize(300, 200);
    this.setContentPane(getJContentPane());
    this.setTitle("JFrame");
  }

  private JPanel getJContentPane() {
    if (jContentPane == null) {
      jLabel = new JLabel();
      jLabel.setText("This is Visual Class.");
      jContentPane = new JPanel();
      jContentPane.setLayout(new BorderLayout());
      jContentPane.add(jLabel, BorderLayout.NORTH);
      jContentPane.add(getJButton(), BorderLayout.SOUTH);
    }
    return jContentPane;
  }

}


見ればわかるように、かなりクセのあるソースコードであることがわかります。コンストラクタでは、initializeメソッドを呼び出して初期化の処理を行っています。このinitializeでは、getJContentPaneメソッドでコンテントペイントなるJPanelを取得し、これをコンテントペインに設定しています。

このgetJContentPaneの中で、実際のGUIの構築が行われています。JLabelを作成しする処理などはここでおこなっていますね。が、JButtonの作成処理は、ここから更にgetJButtonメソッドを呼び出して行っています。

このgetJButtonでは、JButtonを作成した後、無名クラスでActionListenerを組み込んでいます。その中にある// TODOのコメント部分に必要な処理を追加すれば、イベント処理が完成するようになっているのですね。

まぁ、JPanelやJButtonの作成がメソッドとして切り分けられているのは、そうすることで各コンポーネントごとに作成処理が整理され、自動生成する上で都合がよいのだろうという想像はつきます。が、JButtonはそうするがJLabelはそうしない、となっていたり、肝心のイベント組み込み部分は独立した形で切り分けずに無名クラスで組み込んで合ったりと、個人的に「???」と?マークが頭の周りをぐるぐる回ってしまうソースコードではありますね。

VEの最大の欠点は、ここにあるような気がします。せっかく生成されたソースコードが、どうも正直いって「使いにくい」のです。といって、あまりにGUIの生成部分のコードを変えてしまうと、VEが解読できなくなってしまうのでは?という不安があるため、手直しするのも躊躇してしまいます。結局、なんとも居心地の悪いソースコードをベースにプログラミングを行うことになってしまうわけです。

GUIデザイナーは、実にこの部分に最大のチェックポイントがあるように思えます。すなわち、「生成されたソースコードが、自分にとって使いやすいものになっているか」という点です。例えば、ガイドにとっては、VEのソースコードよりNetBeansの生成するソースコードのほうがしっくりくるのです。

これは、どちらがよいというより、個人の「相性」の問題といってよいでしょう。VEの生成するソースコードにすぐ慣れた人、違和感を感じない人にとっては、VEはまさにベストツールとなってくれるはずです。
【編集部おすすめの購入サイト】
楽天市場で Java 関連の書籍を見るAmazon で Java 関連の書籍を見る
  • 前のページへ
  • 1
  • 4
  • 5
  • 6
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます