extjs 如何在单击按钮时打开面板

jm2pwxwz  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(223)

我想在我单击的按钮下打开一个面板窗口,该按钮位于标题中。面板应该显示在按钮下(与标题对齐):我试着:

{
            xtype:'button',
            height: '100%',
            text: Strings.Notifications,
            glyph: 'xf142@FontAwesome',
            reference: 'settingsNotificationsButton',
            cls :'headerButtonsCls',
             listeners: {
                    click: function () {
                        new Ext.form.Panel({
                            width: 200,
                            height: 200,
                            title: 'Foo',
                            floating: true,
                            closable: false
                        }).show();
                    }
                }

    }

但是上面的代码在屏幕中间显示了一个模态面板,我不想这样做(正如我所说的,我想把它放在标题下面),那么如何实现呢?谢谢。

olmpazwi

olmpazwi1#

我以Muzaffers的答案为基础,并在此处添加了使用事件坐标的功能:

var windowPanel = Ext.create('Ext.Panel', {
     bodyStyle: 'background: #ffff00;',
     border: true,
     height: 200,
     width: 200,
    floating:true
 });
 Ext.create('Ext.Container', {
     renderTo: Ext.getBody(),
     items: [{
             xtype: 'button',
             text: 'Show/Hide Panel',
             handler: function (btn, event) {
                 windowPanel.showAt(event.getXY())
             }
         }
     ]
 });

这是小提琴:https://fiddle.sencha.com/#fiddle/3a8j&view/editor

xqk2d5yq

xqk2d5yq2#

对你有用吗?

var windowPanel = Ext.create('Ext.Panel', {
     bodyStyle: 'background: #ffff00;',
     border: true,
     height: 200,
     width: 200,
     hidden: true
 });
 Ext.create('Ext.Container', {
     renderTo: Ext.getBody(),
     items: [{
             xtype: 'button',
             text: 'Show/Hide Panel',
             handler: function () {
                 if (windowPanel.isHidden()) {
                     windowPanel.show();
                 } else {
                     windowPanel.hide();
                 }
             }
         },
         windowPanel
     ]
 });

https://fiddle.sencha.com/#fiddle/3a8c

相关问题