[原]解决SWT中ViewForm与ToolBar的兼容问题

    学习《Eclipse从入门到精通》时,参考第11章第1节的代码。在同样Code的情况下,Design视图显示工具栏正常,但实际运行时无法显示。
※ 该问题,在《Eclipse从入门到精通》(第二版)已经解决,处理方式相同。

一、平台环境
IDE平台:

引用
Eclipse IDE for PHP Developers  1.3.0.20100617-0520  epp.package.php
Eclipse Platform  3.6.0.I20100608-0911  org.eclipse.platform.ide

插件:

引用
WindowBuilder Core  0.9.0.r36x201102111130  org.eclipse.wb.core.feature.feature.group
SWT Designer  0.9.0.r36x201102111222  org.eclipse.wb.rcp.feature.feature.group

二、错误现象
《Eclipse从入门到精通》第11章第1节,即105页的代码:

Design视图结果如下:
点击在新窗口中浏览此图片三、解决
从其他SWT的ToolBar示例,在没有设定ViewForm 容器的情况下,ToolBar是可以正常显示的。当我修改代码,把ToolBar直接建立在Shell 上,工具栏即可显示出来。因此,判断问题出在ViewForm 容器上。
经搜索,找到问题的解决办法,即先设置好ToolBar上所有的ToolItem,最后在定义ViewForm的setTopLeft方法,把ToolBar显示出来。
效果如下:
点击在新窗口中浏览此图片import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ViewForm;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;

public class SimpleEditor {
  private static Text text;

  /**
   * Launch the application.
   * @param args
   */
  public static void main(String[] args) {
    Display display = Display.getDefault();
    Shell shell = new Shell();
    shell.setSize(450, 439);
    shell.setText(“SWT Application”);
    shell.setLayout(new FillLayout());
    ViewForm viewForm = new ViewForm(shell,SWT.None);
    
    ToolBar toolBar = new ToolBar(viewForm, SWT.NONE);    
    text = new Text(viewForm, SWT.BORDER|SWT.V_SCROLL);
    viewForm.setContent(text);
    //viewForm.setTopLeft(toolBar); //把这行挪到所有ToolItem定义后面
    
    ToolItem toolItem = new ToolItem(toolBar, SWT.PUSH);
    toolItem.setText(“取得”);
    
    ToolItem toolItem2 = new ToolItem(toolBar, SWT.PUSH);
    toolItem2.setText(“清除”);
    
    viewForm.setTopLeft(toolBar); //改动的地方
    
    toolItem.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent e) {
        String str = text.getText();
        MessageDialog.openInformation(null, “Text”, str);
      }
    });
    toolItem2.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent e) {
        text.setText(“”);
      }
    });

    shell.open();
    shell.layout();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
  }

}
四、参考资料
SWT-JFace-Eclipse Demo
Eclipse的SWT使用ViewForm,ToolBar,ToolItem兼容问题解决

Eclipse 3.6.2 JFace 对话框显示中文
用Tree代替TableTree制作表格型树
解决java.lang.UnsupportedClassVersionError 错误
中山大学MSE-101 课程:面向对象技术与方法的PPT文档

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/103959.html

(0)
上一篇 2021年8月25日 12:27
下一篇 2021年8月25日

相关推荐

发表回复

登录后才能评论