0

我想覆盖 extjs 4 中的 Ext.ux.GroupTabPanel 宽度。

请问有什么想法吗?

4

1 回答 1

0

标签栏宽度确实被硬编码为 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);
    }
});
于 2013-05-07T10:33:06.920 回答