我想覆盖 extjs 4 中的 Ext.ux.GroupTabPanel 宽度。
请问有什么想法吗?
标签栏宽度确实被硬编码为 150,所以你是对的,你必须覆盖或扩展类。
以下覆盖将选项添加到 GroupTabPanel 以执行您想要的操作,而不更改默认行为:
/**
* This override adds the {@link #tabBarWidth} config option.
*/
// The name of the class is only used by the loader to find the file
Ext.define('MyApp.Ext.ux.GroupTabPanelWidthOption', {
override: 'Ext.ux.GroupTabPanel'
/**
* Width of the tab bar.
*
* @cfg {Integer}
*/
,tabBarWidth: 150
,initComponent: function() {
this.callParent(arguments);
this.down('treepanel').setWidth(this.tabBarWidth);
}
});
当然,代码必须位于 Ext 的类加载器能够找到的文件中。
或者,如果您真的想更改默认宽度,最好扩展类而不是覆盖它,以避免破坏遗留代码或外部代码的任何风险(如果您认为这对您来说不是问题,您可以更改上面代码中的默认选项值)。
你会这样做:
/**
* A {@link Ext.ux.GroupTabPanel} with configurable tab bar width.
*
* @xtype largegrouptabpanel
*/
Ext.define('MyApp.tab.GroupTabPanel', {
extend: 'Ext.ux.GroupTabPanel'
,alias: ['widget.largegrouptabpanel']
/**
* Width of the tab bar.
*
* @cfg {Integer}
*/
,tabBarWidth: 300 // Notice the changed default
,initComponent: function() {
this.callParent(arguments);
this.down('treepanel').setWidth(this.tabBarWidth);
}
});