[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: JBuilder2におけるMVCモデル
> >1. JFrameにいくつかJPanelを置いて、そこへボタンを取り付けた
> >階層構造を作っても、すべてのコンポーネントのハンドルは
> >JFrameのメンバとなってしまう。
> >→JFrameに対して、自由にJPanelを取り付けたり取り外したり、
> >別のJFrameに取り付けたりしたいので、親のJPanelのメンバと
> >なって欲しいのだが、できない。
> 左側のツリーペインで、JPanelを選んで、JButtonをドロップすると
> 出来ます。
ご教示ありがとうございます。
MyJFrame の design 画面上ではなくて、MyJFrame に取り付ける
MyJPanel を先に生成して、それの desgin画面上で Buttonを
ドロップするということですね。
なるほど、出来ました。
でも、作った MyJPanel を、MyJFrameにドロップするにはどうしたら
良いのでしょう。MyJPanelのソースに
MyJPanel mypanel1 = new MyJPanel();
getContentPane().add(mypanel1, "CENTER");
と手書きすれば、design画面で見ることが出来るようにはなりますが。
Beanにしてツールバーに載せないと駄目なのかな。
#########
> >2. ボタンに対するアクションの実体をコーディングするメソッhは
> >JFrameのメソッドとして出来上がってしまう。(メソッド生成先を
> >指定できない)
> >→MVCアーキテクチャで、JFrameをVIEW、データの本体をMODEL、
> >両者を取り持つものをCONTROLLERとし、アクションの実体は
> >CONTROLLERのメソッドとしてコーディングしたいのだが、できない。
> 上記と同じ理由ですね。プロジェクト・プロパティのコード・スタイルで、
> 別のアダプター・クラスに分けることは出来ます。
class MyPanel extends JPanel {
Controller ctl = new Controller();
:
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ctl.button1_actionPerformed(e); // this. じゃなくて ctl.
}
});
というのが望み(処理本体をthisじゃなくてctlに置く)なのですが。
アダプタクラスを分けても、結局その actionPerformed()から
adaptee.button1_action..で、MyPanelのメソッドが呼び戻されて
いるのでは意味がないのです。
#########
> JBuilderは、素直な環境です。JDK + エディタで出来ることは、
> JBuilderでもできます。
2way編集はかなりのもので、手書きで書いた部分もある程度は
拾ってくれるようですね。メンバやメソッドのツリー表示部分
についてはほとんど漏れなく拾ってくれるようで嬉しいです。
design 画面や、右側のイベントプロパティシートでは JBuilderの
方針にあわせたコーディングを強いられる点が辛いですが、
そこを諦めればば、たしかに JDK + エディタで出来ることは
JBuilderでもできるというのは納得しました。
--
/** 久野 浩 - Hiroshi Kuno
* @xxxxxxxxxx mailto:hkuno@xxxxxxxxxx
* @xxxxxxxxxx ISO C9X, ISO C++, Java and astoronomy
*/