2008-04-01から1ヶ月間の記事一覧

支援ツール:インスペクターで状態を確認する

リファクタリングを実践しても、インスペクターの機能は変りません(そこに、リファクタリングの意義があります)。先の例題を改訂した、次のコードの断片def ex_Inspector(): target = Inspector(JLabel()) # Here goes! (@.@) Inspector(target).show()を…

気軽に Swing《5》JLabel: 開会セレモニー 5/5

Java.use(better, Jython=Swing) # 萬プログラマーのための Python 導入ガイド《記事一覧》 改訂♪2008/09/22

イベントリスナー:actionPerformed

改訂したクラス InspectorPanel は、複数のサブパネル(SelectionPanel など)で構成されます。ボタンを選択すると、指定した項目のメンバー特性を確認するために、新たなインスペクターが起動されます。その背景を図解すると、次のようになります。 ボタン…

気軽に Swing《5》JLabel: 開会セレモニー 4/5

Java.use(better, Jython=Swing) # 萬プログラマーのための Python 導入ガイド《記事一覧》 改訂♪2008/09/22

イベントリスナー:valueChanged

新たに抽出したクラス SelectionPanel は、どのメンバー特性を確認したいかを選択する手段を提供します。任意のリスト項目を選択すると、そのメンバー特性を表わす情報を、テキスト領域に表示します。その背景を図解すると、次のようになります。 リスト項目…

気軽に Swing《5》JLabel: 開会セレモニー 3/5

《Previous|3/5|Next》 Java.use(better, Jython=Swing) # 萬プログラマーのための Python 導入ガイド《記事一覧》 改訂♪2008/09/22

ツールチップを設定する

public void setToolTipText(String text)メソッド setToolTipText(String) は、ツールチップを指定します。引数 text に指定した文字列が表示されます。ここでも、キーワード引数 toolTipText= を使って簡潔に表現できます。

アイコン画像を設定する

JLabel は、テキスト/画像を限られた領域に提示するのに、便利な機能を提供します。表示したい画像が固定なら、次のように、 public JLabel(Icon image) public void setIcon(Icon icon)コンストラクター JLabel(Icon) が便利です。また、インスタンスを生成…

リファクタリング

リファクタリングを「いつ実施すべきか」という問題に、唯一の正解はありません。ここでは、要求仕様の変更が軽微であり、開発スケジュールにも「余裕がある」という状況を想定して、この機会にリファクタリングを実施します。 支援ツール(インスペクター)…

Swing:JLabel

各チームの情報(画像ファイル)が用意してあるので、その内容を読み込んで表示します。表示したいテキスト/画像が「固定である(選択/編集する必要がない)」という仮定に基づいて、話を進めます。 【例題1】JLabel に画像ファイルの内容を表示したい。 画…

気軽に Swing《5》JLabel: 開会セレモニー 2/5

《Previous|2/5|Next》 Java.use(better, Jython=Swing) # 萬プログラマーのための Python 導入ガイド《記事一覧》 更新♪2008/09/22

今回の課題:全32チームの旗を一堂に掲げよう

ワールドカップの開会セレモニーには、独特の趣があります。オリンピックの開会式における入場行進のように、出場選手が一堂に会して「チームの旗を掲げるとしたら」そんな場面を想像してみてください。 【要求仕様】予選リーグに出場した全32チームの旗を…

気軽に Swing《5》JLabel: 開会セレモニー 1/5

《Previous|1/5|Next》 Java.use(better, Jython=Swing) # 萬プログラマーのための Python 導入ガイド《記事一覧》 《5》JFrame: 開会セレモニー 《著》伊藤うさぎ、森こねこ《監修》小泉ひよ子とタマゴ倶楽部第1版♪2003/12/29 ● 第2版♪2006/10/02 ● 更…

終わりに

インスペクターは、アプリケーション開発の支援ツールとしてだけでなく、学習の支援ツールとしても役立つことを確認しました。次回は、JLabel に着目します。□ 《Previous|5/5|Next》

例外:UnboundLocalError

ここで着目して欲しいのは、コンストラクターにキーワード引数 layout= を指定する、Jython のイディオムが通用しないことです。ここで、次のようにすると、 view = JPanel( layout=BoxLayout(view, BoxLayout.X_AXIS),例外 UnboundLocalError が発生して、…

BoxLayout を利用する

【例題3】java.awt.BoxLayout を利用して、パネル内にボタンを配置したい。 パネル内にボタンを配置(列優先)します。これを実現したのが、次のコードです。def ex_BoxLayout(): font = Font("courier", Font.PLAIN, 24) view = JPanel() view.layout = Bo…

気軽に Swing《4》JPanel: グループリーグ 5/5

《Previous|5/5|Next》 Java.use(better, Swing=Jython) # 萬プログラマーのための Python 導入ガイド《記事一覧》 更新♪2008/09/19

GridLayout を利用する

【例題2】java.awt.GridLayout を利用して、パネル内にボタンを配置したい。 パネル内にボタンを配置(行優先)します。これを実現したのが、次のコードです。def ex_GridLayout(): view = JPanel( layout=GridLayout( rows=2, columns=3, hgap=20, vgap=4,…

気軽に Swing《4》JPanel: グループリーグ 4/5

《Previous|4/5|Next》 Java.use(better, Swing=Jython) # 萬プログラマーのための Python 導入ガイド《記事一覧》 更新♪2008/09/19

支援ツール:JPanel.locationOnScreen の変化を確認する

再び、興味深い実験をしてみます。 まず、7)リスト項目から locationOnScreen を選択しておきます。次に、元のウィンドウを移動した後で、再びその状態をインスペクターで観察します。再び、8)リスト項目から locationOnScreen を選択すると、スクリーン座…

支援ツール:JPanel.layout の状態を確認する

さらに、インスペクターを使って、4)リスト項目の中から layout を選択すると、次のように、それが BorderLayout インスタンスだと分かります。ここで、5)ボタン 'inspect' を選択すると、新たなインスペクターが起動されます。 リスト項目にあるのは、jav…

支援ツール:JPanel の状態を確認する

ここで、興味深い実験をしてみます。先の例題に、次のコードの断片を追加して、def ex_BorderLayout(): view = JPanel( layout=BorderLayout(), ) ... Inspector(view).show() # Here goes! (@.@)再実行すると、次のようなインスペクターが現われます。 する…

気軽に Swing《4》JPanel: グループリーグ 3/5

《Previous|3/5|Next》 Java.use(better, Swing=Jython) # 萬プログラマーのための Python 導入ガイド《記事一覧》 更新♪2008/09/19

BorderLayout を利用する

【例題1】java.awt.BorderLayout を利用して、パネル内にボタンを配置したい。 def ex_BorderLayout(): view = JPanel( layout=BorderLayout(), ) for e in "CENTER", "NORTH", "WEST", "EAST", "SOUTH": view.add(JButton(text=e), getattr(BorderLayout, …

Swing:JPanel

すでに何度も利用しながら、まだ紹介していないものの1つが JPanel です。これは、他のコンポーネントを配置するコンテナー java.awt.Container として、便利な機能を提供します。他のコンポーネントを追加するには、次のように、 public Component add(Com…

気軽に Swing《4》JPanel: グループリーグ 2/5

《Previous|2/5|Next》 Java.use(better, Swing=Jython) # 萬プログラマーのための Python 導入ガイド《記事一覧》 改訂♪2008/09/19

今回の課題:各チームをグループ別に表示しよう

【要求仕様】各チームをグループ別に表示したい。 リスト項目を表示するときに、各チームをグループ別(同じ行)に分類します。 例題を起動すると、各チームの情報が表示されます。リスト項目には、同じグループのチームが「横1行に並ぶ」ようにして表示さ…

対象読者

こんな症状を抱えているなら (@.@) ・Java で構築されたレガシーシステムを再構成したい 【効能】既存のリソースを再利用しつつ、同時に開発効率を改善できるかも 【注意】記事の主旨から「先に示したプログラムが後で覆される」事例が含まれます。次の展開…

はじめに

はじめの一歩が末の千里へと実を結びます。旅の始まりに特別な注意はありません。この記事では、1)アプリケーション開発、 2)Swing/Jython の解説、3)支援ツール作成が三位一体となって、読者のみなさんの学習を支援します。今回は JPanel に着目します。

気軽に Swing《4》JPanel: グループリーグ 1/5

《Previous|1/5|Next》 Java.use(better, Swing=Jython) # 萬プログラマーのための Python 導入ガイド《記事一覧》 《4》JPanel: グループリーグ 《著》伊藤うさぎ、森こねこ《監修》小泉ひよ子とタマゴ倶楽部 第1版♪2003/12/29 ● 第2版♪2006/10/02 ● 更…