5月6日 ゴールデンウィークで少し時間があるのか,こうしろうのEclipse3 + Visual EditorによるJavaの勉強が続く。今日はプロジェクトを作成し,GUIの構築へと進む。
Eclipseを起動したら,ファイル-新規-プロジェクトでプロジェクトを作成する。
club_cameraというプロジェクト名にしたが,アンダースコアなしでClubCameraなどのほうがわかりやすいぞと思うのだが,細かいことは言わないでおこう。とにかく作ってみることが大切なのだ。
次にアプリケーションの中心となるウィンドウをSwingのJFrameクラスの派生クラスとして作成する。ファイル-新規-その他でJFrame Visual Classを選択し,名前をclub_cameraとする。public static void main(String[] args)にチェックを付け,mainメソッドの作成を指示する。アプリケーションはこのmainメソッドから開始する。
ウィンドウのsizeプロパティを400,400に,titleプロパティを部カメラ-検索・管理に設定する。ウィンドウの外観が変わると同時にコードに反映される。次にコンテンツペイン(jContentPane)のLayoutプロパティをBorderLayoutからFlowLayoutに変更したら,Paletteからどんどん部品を載せていく。
まず,タブ付きペイン(jTabbedPane)を配置し,PreferredSizeを適当に設定する。こうしろうは390,340にした。少しややこしいが,タブに表示する文字列(検索)はjTabbedPaneに設定するのではなく,jTabbedPane に配置したパネル(jPanel)のtab titleプロパティに記述する。タブ付きペイン には複数のパネルを配置できるからだ。
こんどは検索条件を入力するためのパネルを先ほどのパネルの上にのっける。borderプロパティの右端のボタンをクリックするとJava Property Editorが開くので,Titleに「検索条件」と打ち込む。その上に,ラベル(jLabel 機種名)とテキストフィールド(jTextField)を配置した。
タブ付きペインやパネルはPaletteのSwing Containersから,ラベルやテキストフィールドはSwing Componentsから配置していく。
こんな風にペチャペチャと部品を貼り付けているだけで,以下のコードが作成される。
----------------------------------------------------------
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.FlowLayout;
import javax.swing.JTabbedPane;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class club_camera extends JFrame {
private JPanel jContentPane = null;
private JTabbedPane jTabbedPane = null;
private JPanel jPanel = null;
private JPanel jPanel1 = null;
private JLabel jLabel = null;
private JTextField jTextField = null;
/**
* This method initializes jTabbedPane
*
* @return javax.swing.JTabbedPane
*/
private JTabbedPane getJTabbedPane() {
if (jTabbedPane == null) {
jTabbedPane = new JTabbedPane();
jTabbedPane.setPreferredSize
(new java.awt.Dimension(390,340));
jTabbedPane.setName(""); // Generated
jTabbedPane.addTab("検索", null, getJPanel(), null);
}
return jTabbedPane;
}
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
if (jPanel == null) {
FlowLayout flowLayout = new FlowLayout();
flowLayout.setAlignment(java.awt.FlowLayout.CENTER);
// Generated
jPanel = new JPanel();
jPanel.setLayout(flowLayout); // Generated
jPanel.add(getJPanel1(), null); // Generated
}
return jPanel;
}
/**
* This method initializes jPanel1
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel1() {
if (jPanel1 == null) {
jLabel = new JLabel();
jLabel.setText("機種名:"); // Generated
jPanel1 = new JPanel();
jPanel1.setPreferredSize(new java.awt.Dimension(290,150));
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
"検索条件", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
// Generated
jPanel1.add(jLabel, null); // Generated
jPanel1.add(getJTextField(), null); // Generated
}
return jPanel1;
}
/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setColumns(15); // Generated
}
return jTextField;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
}
/**
* This is the default constructor
*/
public club_camera() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(400, 400);
this.setContentPane(getJContentPane());
this.setTitle("部カメラ―検索・管理");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new FlowLayout());
jContentPane.setPreferredSize(new java.awt.Dimension(0,0));
jContentPane.add(getJTabbedPane(), null); // Generated
}
return jContentPane;
}
}
----------------------------------------------------------
ソースコードを上下させて眺めると,コード上でも階層通りに部品がのっかっていることがおわかりいただけるでしょうか。getJContentPane()-getJTabbedPane()-getJPanel()-getJPanel1()-getJTextField()とつながっている。
Visual Editorで部品を配置すると,リアルタイムにコードが更新されるので,コードの書き方の予習にもなるだろう。
第225話 プロジェクトを作成し,GUIの構築を始める
あなたにお薦め
今日のピックアップ
-
不要な製品の購入を強いられる、ブロードコムのVMware買収で悪影響
-
米GitHubが「Workspace」を開始、ソフト開発の課題をAIが自動解決
-
Core Ultra搭載の「dynabook R9」、35時間駆動の実力
-
パスワード管理や不正サイト対策はEdgeもChromeも充実、複数機器の同期は選べる
-
コメント関連が使いやすくなった新Acrobat Reader、「クイックツールバー」に集約
-
M3搭載「MacBook Air」とM2搭載モデルを比較、外付けディスプレー2台接続も試す
-
有名人になりすまして投資広告を掲載、SNSで接触してみた結果
-
NECが受注したe-Govのガバクラ移行が大幅遅延、構築手法の途中変更が影響か
-
IIJ公式サイトのPVがある日突然13倍に、バズったわけでも炎上したわけでもない裏側
-
アリババのデジタル人材育成プログラム、世界の起業家や若者4千人以上にノウハウ提供
-
縦長のWebページ全体を画像で保存、メニューから選べるEdgeがChromeより便利
-
「四重苦」で伸び悩む日本市場、なぜ海外スマホメーカーが開拓に本腰を入れるのか
注目記事
おすすめのセミナー
-
「仮説立案」実践講座
例えば「必要な人材育成ができていない」といった課題に、あなたならどう取り組みますか? このセミナ...
-
CIO養成講座 【第35期】
業種を問わず活用できる内容、また、幅広い年代・様々なキャリアを持つ男女ビジネスパーソンが参加し、...
-
改革リーダーのコミュニケーション術
プロジェクトを成功に導くために改革リーダーが持つべき3つのコミュニケーションスキル—「伝える」「...
-
パワポ資料が見違える「ビジネス図解」4つのセオリー
インフォグラフィックスとは、形のない情報やデータなど伝えたいことを分かりやすい形で表現する技法で...
-
間違いだらけの設計レビュー
本セミナーでは、現場で多く見られる間違ったレビューの典型例を示し、そうならないための現場の改善策...
-
オンライン版「なぜなぜ分析」演習付きセミナー実践編
このセミナーでは「抜け・漏れ」と「論理的飛躍」の無い再発防止策を推進できる現場に必須の人材を育成...
-
問題解決のためのデータ分析活用入門
例えば「必要な人材育成ができていない」といった課題に、あなたならどう取り組みますか? このセミナ...
-
業務改革プロジェクトリーダー養成講座【第16期】
3日間の集中講義とワークショップで、事務改善と業務改革に必要な知識と手法が実践で即使えるノウハウ...
注目のイベント
-
日経クロステックNEXT 関西 2024
2024年5月16日(木)~5月17日(金)
-
日経ビジネスCEOカウンシル
2024年5月16日(木)17:00~19:50
-
WEURO DIVERSITY & INCLUSION FORUM
2024年5月17日(金)13:00~17:30(予定)
-
VUCA時代に勝ち残る戦略的サプライチェーン構築に向けて
2024年 5月 24 日(金) 10:00~16:20
-
人手不足を乗り越える 日本の産業界成長のシナリオ2024
2024年5月30日(木)10:20~17:45
-
人的資本経営版:日経ビジネスLIVE 2024 Spring
2024年6月3日(月)~6月5日(水)
-
DX Insight 2024 Summer
2024年6月4日(火)、5日(水)
-
付加価値ある意匠デザインを実現するものづくり技術2024
2024年6月7日(金)10:30 ~ 17:00
-
WOMAN EXPO 2024
2024年6月8日(土)10:00~17:30
-
デジタル立国ジャパン2024
2024年6月10日(月)、11日(火)
おすすめの書籍
-
ソフトバンク もう一つの顔 成長をけん引する課題解決のプロ集団
ソフトバンクにはモバイルキャリア事業以外のもう一つの顔が存在する。本書ではキーパーソンへのインタ...
-
対立・抵抗を解消し合意に導く 改革リーダーのコミュニケーション術
本書は、改革リーダーに必須のコミュニケーション術を3つのスキルの観点からまとめ上げたものです。今...
-
もっと絞れる AWSコスト超削減術
本書ではコスト課題を解決するため、AWSコストを最適化し、テクニックによって削減する具体策を紹介...
-
優秀な人材が求める3つのこと 退職を前提とした組織運営と人材マネジメント
「学生に人気のコンサルであっても、大手企業であっても、せっかく獲得した人材が数年で辞めてしまう...
-
Web3の未解決問題
ブロックチェーン技術を主軸とするWeb3の技術について、現在の社会制度との摩擦と、その先にある新...
-
ロボット未来予測2033
ロボットの用途・市場はどう拡大していくのか。AI実装でロボットはどこまで進化するのか。技術の進展...