Home > Ext | JavaScript > フィールドをレイアウトするのは?

フィールドをレイアウトするのは?

  • Posted by: Kotsutsumi
  • 2010/5/23 日曜日 5:47:39
  • Ext | JavaScript

ども、小堤です。

さて、ちょっとコードばっかり書いてて、ちょっとつかれたのでブログを。めずらしい・・。

みなさんは、Ext JSのフィールドをレイアウトする場合、何にレイアウトしますか?Ext.form.FormPanelですか?Ext.Panelですか?サンプルは、FormPanelにレイアウトしていることが多いですね。これは、FormPanelのアイテムにフィールドを設定すると、フォームレイアウトでレイアウトされるからです。

では、Ext.Panelにレイアウトしてはいけないのでしょうか?

そんなことはありません。

Ext.Panelにレイアウトしてもかまいません。しかし、その場合、レイアウトも指定しないと、FormPanelに配置したようにはなりません。

layout: ‘form’

としてあげる必要があります。

さて、ここまでは超初心者でも知ってる話ですんで、どーでもいんですが。

注意すべき点があります。

Ext.Panelの初期xtypeはExt.Panelであるということと、レイアウトは、containerレイアウトである。という点です。

何が言いたいかというと。

Ext.Panel内のアイテムで次々レイアウトを切って、フィールドをぶっこんでいくと、全部パネルでレイアウトされるんですね。

そうした場合、まず、ボーダー引かれます。うざいです。背景色も指定されてしまいます。結論から言うと、大枠は、Ext.Panelでよいのですが、その中にcolumレイアウトなどをいれたりしてレイアウトを行う場合、必ずExt.Containerクラスをxtypeで指定するようにします。

こうすることで、フィールドのレンダリングスピードが向上します。

layout: ‘column’,
items: [{
xtype: 'container',
columnWidth: .5,
items: [{
xtype: 'textfield'
}]
},{
xtype: ‘container’,
columnWidth: .5,
items: [{
xtype: 'textfield'
}]
}]

ざっくりかくと上記のようになります。(インデントきいてませんがw)
Ext JSのレイアウトは、コンテナーに対して、ネストしながらレイアウトを行っていきますが、この枠がすべてExt.PanelになるかExt.Containerになるかで、パフォーマンスは結構違います。
また、Ext.Containerの場合、bodyが存在しないので、背景がきれいに透けます。なので、大枠で背景を指定して、ちゃんと透けてくれるわけですね。
余計なボーダー消したりとかのコードも必要ないですし、パフォーマンスもよいですし。

ホントは、もうちょいいろいろあるんですが、簡単なテクニックとして、レイアウトするときは、だまってExt.Containerを指定する。覚えておいておくといいですよ。

Trackbacks:1

Trackback URL for this entry
http://code.xenophy.com/wp-trackback.php?p=919
Listed below are links to weblogs that reference
フィールドをレイアウトするのは? from code:x
pingback from Free Writing » xtypeにcontainerを指定した場合の描画速度 2010/5/31 月曜日

[...] 詳しい内容については、小堤さんのブログで紹介されています。 [...]

Home > Ext | JavaScript > フィールドをレイアウトするのは?

Search
Feeds
Meta

Return to page top