0

CollapsePanel で問題に直面しています。

イベントが発生したときにタイトルを変更する必要があります。これまでのところ、BorderLayout の createCollapsePanel をオーバーライドし、必要なイベントにリスナーを追加します。

final BorderLayout layout = new BorderLayout()
{

    @Override
    protected CollapsePanel createCollapsePanel(final ContentPanel panel, final BorderLayoutData data)
    {
        final CollapsePanel result = super.createCollapsePanel(panel, data);
        panel.getHeader().addListener(Events.Change, new Listener<BaseEvent>()
        {
            @Override
            public void handleEvent(BaseEvent be)
            {
                result.setTitle(panel.getHeading());
                result.repaint();
                layout();
            }
        });
        result.setTitle(panel.getHeading());
        return result;
    }
};

上記のコードは問題なく実行されますが、結果の CollapsePanel が新しいタイトルを取得することはありません。

足りないものはありますか?ありがとう

4

2 に答える 2

0
    final BorderLayout layout = new BorderLayout()
    {
        @Override
        protected CollapsePanel createCollapsePanel(final ContentPanel panel, final BorderLayoutData data)
        {
            final CollapsePanel result = super.createCollapsePanel(panel, data);

            result.sinkEvents(Events.Change.getEventCode());
            panel.getHeader().addListener(Events.Change, new Listener<BaseEvent>()
            {
                @Override
                public void handleEvent(BaseEvent be)
                {
                    result.getElement().getElementsByTagName("span").getItem(0).setInnerText(panel.getHeading());
                    PcTreeUI.this.layout(true);
                }
            });
            result.setTitle(panel.getHeading());
            return result;
        }
    };
于 2012-07-26T18:56:22.757 に答える
0

リッスンしているイベントをシンクする必要があるかもしれません...

result.sinkEvents(Events.Change);

(私は gxt3 に切り替えましたが、これは少し異なる方法で行うため、その行はテストしていません。Events.Change または Events.OnChange が必要かどうかはわかりません)

于 2012-07-25T07:31:24.900 に答える