ExtJs - 在Panel的中心布局中设置固定宽度

时间:2010-03-11 05:08:44

标签: javascript layout extjs height panel

使用ExtJs。

我正在尝试设计一个主要部分,它分为三个子面板(树状列表,网格和面板)。它的工作方式是你有一个带有元素的树列表(西),你点击一个填充网格(中心)的元素,然后你点击网格中的一个元素,然后生成面板(西)。

我的主面板包含其他三个面板,已经定义了布局“边框”。

现在我遇到的问题是中心布局(网格)已在代码中定义,具有固定宽度,西面板作为自动宽度。但是当界面生成时,网格宽度会突然占用界面中的所有空间而不是西面板。

代码如下:

var exploits_details_panel = new Ext.Panel({
 region: 'east',
 autoWidth: true,
 autoScroll: true,
 html: 'test'
});

var exploit_commands = new Ext.grid.GridPanel({
 store: new Ext.data.Store({
   autoDestroy: true
  }),

 sortable: true,
 autoWidth: false,
 region: 'center',
 stripeRows: true,
 autoScroll: true,
 border: true,
 width: 225,

 columns: [
  {header: 'command', width: 150, sortable: true},
  {header: 'date', width: 70, sortable: true}
 ]
});

var exploits_tree = new Ext.tree.TreePanel({
 border: true,
 region: 'west',
 width: 200,
 useArrows: true,
 autoScroll: true,
 animate: true,
 containerScroll: true,
 rootVisible: false,
 root: {nodeType: 'async'},
 dataUrl: '/ui/modules/select/exploits/tree',

 listeners: {
  'click': function(node) {
  }
 }
});

var exploits = new Ext.Panel({
 id: 'beef-configuration-exploits',
 title: 'Auto-Exploit',
 region: 'center',
 split: true,
 autoScroll: true,
 layout: {
     type: 'border',
     padding: '5',
     align: 'left'
 },

 items: [exploits_tree, exploit_commands, exploits_details_panel]
});

这里'var exploits'是我的主面板,包含其他三个子面板。

'exploits_tree'是包含一些元素的树列表。当您单击其中一个元素时,将填充网格'exploit_commands',当您单击其中一个填充的元素时,将生成'exploits_details_panel'面板。

如何在'exploit_commands'上设置固定宽度?

感谢您的时间。

1 个答案:

答案 0 :(得分:3)

根据docs,中心区域不能有固定的宽度(请参阅注释标题下的第一个项目符号点)。任何其他区域(N,S,E或W)可以定义其大小,并且中心区域仅占用剩余的任何空间。顺便说一下,这也是其他GUI平台中这种布局风格的标准方法(或者只考虑你用过的任何图形IDE)。

不要在东面板上设置自动宽度,给它一个定义的起始宽度(否则它不会显示,这可能就是你所看到的)。