jFD開発したりしなかったり日誌
2007-12-29 [長年日記]
_ HtmlTablePanel
実家に向かうあずさの中でちょっと手を入れた。
HtmltablePanelでは、設定のXMLファイルの中にHTMLのtableタグを書いてレイアウトを
行うようになっている。
設定のXMLファイルはこんな感じ。
<table>
<tr><td colspan="2">lable<td><tr>
<tr><td>button1<td><td>button2<td><tr>
</table>
実際のコードは、
public class XXXFrame extends JFrame {
private JLabel label = new JLabel();
private Jbutton button1 =new JButton("button1");
private Jbutton button2 =new JButton("button2");
public XXXFrame() {
HtmlTablePanel panel = new HtmlTablePanel)("/layout.xml");
panel.addComponent(label, "label");←"label"という場所に、JLabelを置く
panel.addComponent(button1, "button1");←"button1"という場所に、button1を置く
panel.addComponent(button2, "button2");←"button2"という場所に、button2を置く
getContentPane().add(panel);
}
}
みたいになるんだが、この配置の部分が無駄だった。
GUIプログラミングでは大概、画面に出すコンポーネントは画面クラスのメンバ変数になる。
だったらtdタグのテキストで直接クラスのメンバ名を書いてやればいちいちコンポーネントごとに
addComponentを呼ばなくてもまとめてレイアウトしてくれるようにすればいい。
だから、新しい方式のコードはこうなる(例外処理なんかは省略してます)。
public class XXXFrame extends JFrame {
private JLabel label = new JLabel();
private Jbutton button1 =new JButton("button1");
private Jbutton button2 =new JButton("button2");
public XXXFrame() {
HtmlTablePanel panel = new HtmlTablePanel)("/layout.xml");
panel.layoutByMemberName(this);←これだけで全部のコンポーネントが配置される。
getContentPane().add(panel);
}
}
jFD2だとファイラー画面だけで70個くらいのコンポーネントがあって、そのすべてに対して
addComponentを呼んでいるのが、1行で済ますことが出来る。
かなり便利じゃね?
これがあればIDEのGUIエディタも要らないと思うんだが。
海外でも宣伝してみるかな。