java—在eclipse插件的viewpart中更改swing jpanel的大小(尽管swingutilities.invokelater(runnable()))

pvcm50d1  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(209)

今天,我正在进行一个eclipse插件项目,在该项目中,我使用标准swt_awt桥来插入我的swing组件:

public class MyView extends ViewPart {

    public static final String ID = "HelloRCP.view";
    Frame frame;

    public void createPartControl(Composite parent) {

        Composite composite = new Composite(parent, SWT.EMBEDDED | SWT.NO_BACKGROUND);
        this.frame = SWT_AWT.new_Frame(composite);

        SwingUtilities.invokeLater(new Runnable() {

            private MainPanel swingPanel;

            public void run() {

                this.swingPanel = new MainPanel();
                frame.add(swingPanel);
            }
        });

        this.setResizeListener();

    }
    public void setFocus() {}

    private void setResizeListener() {
        this.frame.addComponentListener(new frameResizeListener(this));
    }

    public Frame getFrame() { return this.frame; } 
}

我想买一个“ frameResizeListener “为了以某种方式触发由swing runnable示例构建的所有后续swing组件(例如JPanel)的更新,这将在viewpart的大小更改后进行,以实现某种响应性设计。不知何故,底层JPanel需要了解viewpart的帧大小。。。
我已经阅读了相当多的so q&a,只找到了“您需要在构建时传递一个参数”的答案。但我的问题是,一旦所讨论的组件已经创建并存在,我的用例就会发生。。。
到目前为止,我看到的唯一解决方案似乎是通过编写共享文件或属性,然后向runnable发送信号,一旦完成就可以读取它,从而破坏线程安全。
其他人能想出更好的选择吗?
非常感谢您的支持!:):)
你好,彼得

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题