如何在RCP应用中设置Console窗口的初始显示大小
RCP应用Console窗口初始大小设置方案
方法1:通过透视图配置固定初始占比
如果你自定义了RCP应用的透视图,直接在透视图工厂类中指定分割比例即可:
- 找到实现了
IPerspectiveFactory接口的透视图定义类 - 在
createInitialLayout方法中配置上下区域的占比,参考代码:
public void createInitialLayout(IPageLayout layout) { String baseArea = layout.getEditorArea(); // 若上方是自定义视图,可先添加到布局,再用自定义视图ID替代baseArea // 0.6f代表分割线在距离顶部60%的位置,下方Console占剩余40%高度,可按需调整数值 IFolderLayout bottomFolder = layout.createFolder("bottomArea", IPageLayout.BOTTOM, 0.6f, baseArea); bottomFolder.addView("org.eclipse.ui.console.ConsoleView"); // 不需要编辑器区域可设置 layout.setEditorAreaVisible(false); }
方法2:复用现有ConsolePageParticipant动态调整
你已经配置了consolePageParticipants扩展点,直接在实现类中添加调整逻辑即可:
public class ExamplePageParticipant implements IConsolePageParticipant { @Override public void init(IPageBookViewPage page, IConsole console) { page.getControl().addPaintListener(new PaintListener() { boolean isFirstLoad = true; @Override public void paintControl(PaintEvent e) { if (isFirstLoad) { isFirstLoad = false; try { IWorkbenchPage activePage = PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getActivePage(); IViewPart consoleView = activePage.findView("org.eclipse.ui.console.ConsoleView"); if (consoleView != null) { Composite parent = consoleView.getViewSite().getShell().getChildren()[0]; if (parent instanceof SashForm) { SashForm splitSash = (SashForm) parent; // 权重按{上方区域占比, 下方Console占比}设置,比如要上下各一半就写{1,1} splitSash.setWeights(new int[]{6,4}); } } } catch (Exception ignore) { // 初始化未完成时忽略异常即可 } e.widget.removePaintListener(this); } } }); } // 其他接口方法按默认逻辑实现即可 @Override public void dispose() {} @Override public void activated() {} @Override public void deactivated() {} @Override public <T> T getAdapter(Class<T> adapter) { return null; } }
内容的提问来源于stack exchange,提问作者Prakash
相关产品推荐
相关产品推荐

