`

再说SWT中的滚动面板ScrolledComposite实现

 
阅读更多
记得以前写过一篇关于滚动面板的文章 SWT中 ScrolledComposite 滚动面板 “不可用” 等常见问题的简单解释,最近又需要实现一个滚动的composite的效果,
当然还是想到了ScrolledComposite,不过看过源码后,对其理解又更加深了一下,其源码的注释中提供的例子代码,是极好的,掠过来看看:
public static void main (String [] args) {
      Display display = new Display ();
      Color red = display.getSystemColor(SWT.COLOR_RED);
      Color blue = display.getSystemColor(SWT.COLOR_BLUE);
      Shell shell = new Shell (display);
      shell.setLayout(new FillLayout());//关键点1.外层的容器layout为FillLayout
 	
      // set the size of the scrolled content - method 1
      final ScrolledComposite sc1 = new ScrolledComposite(shell, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
      final Composite c1 = new Composite(sc1, SWT.NONE);
      sc1.setContent(c1);//关键点2.设置Scrolled容器的Content为内层的容器
      c1.setBackground(red);
      GridLayout layout = new GridLayout();
      layout.numColumns = 4;
      c1.setLayout(layout);
      Button b1 = new Button (c1, SWT.PUSH);
      b1.setText("first button");
      c1.setSize(c1.computeSize(SWT.DEFAULT, SWT.DEFAULT));//关键点3
      
      // set the minimum width and height of the scrolled content - method 2
      final ScrolledComposite sc2 = new ScrolledComposite(shell, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
      sc2.setExpandHorizontal(true);
      sc2.setExpandVertical(true);
      final Composite c2 = new Composite(sc2, SWT.NONE);
      sc2.setContent(c2);
      c2.setBackground(blue);
      layout = new GridLayout();
      layout.numColumns = 4;
      c2.setLayout(layout);
      Button b2 = new Button (c2, SWT.PUSH);
      b2.setText("first button");
      sc2.setMinSize(c2.computeSize(SWT.DEFAULT, SWT.DEFAULT));
      
      Button add = new Button (shell, SWT.PUSH);
      add.setText("add children");
      final int[] index = new int[]{0};
      add.addListener(SWT.Selection, new Listener() {
          public void handleEvent(Event e) {
              index[0]++;
              Button button = new Button(c1, SWT.PUSH);
              button.setText("button "+index[0]);
              // reset size of content so children can be seen - method 1
              c1.setSize(c1.computeSize(SWT.DEFAULT, SWT.DEFAULT));
              c1.layout();
              
              button = new Button(c2, SWT.PUSH);
              button.setText("button "+index[0]);
              // reset the minimum width and height so children can be seen - method 2
              sc2.setMinSize(c2.computeSize(SWT.DEFAULT, SWT.DEFAULT));
              c2.layout();
          }
      });
 
      shell.open ();
      while (!shell.isDisposed ()) {
          if (!display.readAndDispatch ()) display.sleep ();
      }
      display.dispose ();
 }


有了这个例子(注意有两种不同的实现方式哦),正确快速的实现滚动面板,那就是三下五除二的事情了。最后,还是那句话,源码是最好的文档,多多看开源项目的源码,尤其是Eclipse的,这样不但能更快的了解其Api,而且其中的好多设计方法和设计思想也是值得我们借鉴和学习的。
分享到:
评论

相关推荐

    ScrolledComposite自动出现滚动条

    ScrolledComposite自动出现最适合大小的滚动条代码

    swt-demo.zip

    在SWT中,可以使用ScrolledComposite来自动管理滚动条。 5. 图片选择和操作:SWT提供了复选框和其他控件,以实现选择、全选和反选图片的功能。这些功能可以通过监听用户的鼠标点击事件并更新内部数据结构来实现。 ...

    org.eclipse.swt.win32

    org.eclipse.swt.custom.ScrolledComposite.class org.eclipse.swt.custom.ScrolledCompositeLayout.class org.eclipse.swt.custom.StackLayout.class org.eclipse.swt.custom.StyleRange.class org.eclipse.swt....

    学习SWT,RCP的笔记.doc

    下面以`Button`为例详细介绍SWT中的一些常用方法及其用途: 1. **setText(String string)**: 设置按钮上的文本。 2. **setToolTipText(String string)**: 设置鼠标悬停时显示的提示文本。 3. **setBounds(int x, ...

    JFace_SWT.doc

    - **ScrolledComposite**: 滚动容器,当其内容超出窗口大小时,会自动添加滚动条。 - **Shell**: 顶层容器,相当于一个窗口。 #### 七、布局管理器 SWT 提供了多种布局管理器来帮助开发者管理和调整组件的位置和...

    Eclipse_Swt_Jface_核心应用_部分19

    6.7 滚动面板(ScrolledComposite) 95 6.7.1 设置滚动条的样式 96 6.7.2 滚动面板的其他方法 97 6.8 本章小结 97 第7章 SWT布局管理器 98 7.1 布局管理器概述 98 7.1.1 绝对定位 98 7.1.2 托管定位 ...

    SWT&JFACE GEF or Eclipse Platform

    SWT(Standard Widget Toolkit)与JFace是Eclipse平台中用于构建图形用户界面(GUI)的重要工具包。它们提供了一种高效且可移植的方式来创建Java应用程序的用户界面,弥补了Java原生GUI库如AWT和Swing在界面效果和...

    eclipse开发技术详解第6章 容器

    面板是SWT中最基本的容器类型,它允许开发者创建一个区域来容纳其他组件。`Composite`类是所有容器的基础,可以嵌套使用,提供了一种层次化的组件结构。通过`getChildren()`方法可以获取到面板上的所有子组件,`...

    eclipse开发技术详解第4章

    【SWT介绍】 SWT(Standard Widget Toolkit)是Eclipse组织开发的一个开源GUI编程框架,主要用于构建桌面...同时,读者还将掌握如何在SWT应用中添加组件并实现事件监听,为后续深入学习和开发SWT应用打下坚实的基础。

    rcp的文本编辑器的实例

    在这个实例中,我们将深入探讨如何在RCP环境中实现一个基本的文本编辑器,帮助初学者更好地理解这一过程。 首先,我们需要了解Eclipse RCP的基本结构。RCP应用通常由多个插件组成,每个插件都有特定的功能。在这个...

    TableViewerDemo

    在描述中提到的"TableViewerDemo"很可能是一个简单的程序,展示了如何使用SWT中的`TableViewer`类来创建和展示数据。`TableViewer`是JFace数据视图器框架的一部分,它为SWT的`Table`控件提供了更高级的数据绑定和...

    simple.zip

    swt常有控件入门demo Button1.java Canvas1.java Combo1.java Menu1.java SashForm1.java ScrolledComposite1.java SimpleEditor1.java SimpleEditor2.java Slider1.java TabFolder1.java ToolBarExample.java ...

Global site tag (gtag.js) - Google Analytics