- 浏览: 564463 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (344)
- ··············未分类············· (33)
- Eclipse 插件 (15)
- EDA 工具 (1)
- Linux/Unix (3)
- Java (43)
- Java Applet (1)
- Java Draw2d (22)
- Java Draw2d version2 (6)
- Java GEF (2)
- Java SWT (21)
- Java SWT Image 图像 (21)
- Java SWT Tree (16)
- Java SWT Table (4)
- Java SWT TableViewer (11)
- Java SWTbot (4)
- Java Test (2)
- Java Thread 多线程 (22)
- Java Zest (5)
- RC2_3S400学习笔记 (16)
- tcl 脚本 (10)
- Verilog (7)
- XML (6)
- 国家 (5)
- 感叹 (4)
- 面试题 (9)
- 生活 (36)
- 足球 世界杯 (8)
- 老公看你的 (3)
- web开发 (1)
- 数据结构——图 (7)
- c language (1)
最新评论
-
zxjlwt:
路过素人派http://surenpi.com
SWT 树的事件 SWT.Selection SWT.CHECK SWT.DefaultSelection -
hj01kkk:
1楼用法正解
JDK 7 中的 Fork/Join 模式 -
fish_no7:
使用 new SortTask().fork()
JDK 7 中的 Fork/Join 模式 -
wpf523:
mark
Java 多线程例子6 线程安全 线程同步 同步代码块 同步函数 -
uniquejava:
以前碰到过,估计是在icu包中实现了双击自动选中一段文本的功能 ...
java.lang.NoClassDefFoundError: com/ibm/icu/text/BreakIterator
原文:http://www.cnblogs.com/bjzhanghao/archive/2006/09/05/495747.html
该文章来之“八进制”。
public class Draw2DLayoutExample { static Figure canvas;//Parent figure which uses XYLayout as its layout manager static RectangleFigure containerFig;//canvas's only child, which uses ToolbarLayout static RectangleFigure innerContainerFig;//containerFig's only child, which uses ToolbarLayout, too static RectangleFigure firstGreenFig;//innerContainerFig's first child, which has no layout manager static Dimension dimension = new Dimension(40, 20); public static void main(String args[]) { Shell shell = new Shell(); shell.setLayout(new GridLayout(1, false)); //Create control buttons Button button = new Button(shell, SWT.PUSH); GridData gd = new GridData(); button.setLayoutData(gd); button.setText("Add Red"); Button button2 = new Button(shell, SWT.PUSH); gd = new GridData(); button2.setLayoutData(gd); button2.setText("Add Green"); Button button3 = new Button(shell, SWT.PUSH); gd = new GridData(); button3.setLayoutData(gd); button3.setText("Enlarge Green"); //Draw2d area LightweightSystem lws = new LightweightSystem(shell); //The canvas figure which fills right half of shell canvas = new Figure(); canvas.setLayoutManager(new XYLayout()); lws.setContents(canvas); System.out.println(canvas.getLayoutManager()); //A rectangle figure containerFig = new RectangleFigure(); canvas.add(containerFig); canvas.getLayoutManager().setConstraint(containerFig, new Rectangle(120, 10, -1, -1)); ToolbarLayout layout = new ToolbarLayout(); layout.setVertical(true); layout.setSpacing(3); layout.setStretchMinorAxis(false); containerFig.setLayoutManager(layout); containerFig.setBorder(new MarginBorder(5)); RectangleFigure fig = new RectangleFigure(); fig.setBackgroundColor(ColorConstants.red); fig.setSize(dimension); containerFig.add(fig); //A inner container figure innerContainerFig = new RectangleFigure(); ToolbarLayout layout2 = new ToolbarLayout(); layout2.setVertical(false); layout2.setSpacing(3); layout2.setStretchMinorAxis(false); innerContainerFig.setLayoutManager(layout2); innerContainerFig.setBorder(new MarginBorder(5)); containerFig.add(innerContainerFig); //The first green figure in innerContainerFig firstGreenFig = new RectangleFigure(); firstGreenFig.setBackgroundColor(ColorConstants.green); firstGreenFig.setSize(dimension); innerContainerFig.add(firstGreenFig); button.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { RectangleFigure fig = new RectangleFigure(); fig.setBackgroundColor(ColorConstants.red); fig.setPreferredSize(dimension); containerFig.add(fig); } }); button2.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { RectangleFigure fig = new RectangleFigure(); fig.setBackgroundColor(ColorConstants.green); fig.setPreferredSize(dimension); innerContainerFig.add(fig); } }); button3.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { //Make this figure bigger, and see if the outer figure grows accordingly firstGreenFig.setPreferredSize(100, 100); } }); shell.setSize(500, 400); shell.open(); shell.setText("Draw2D Layout Example"); Display display = Display.getDefault(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } } }
文中提到了:
Draw2D里Figure类的setPreferredSize(Dimension)和setSize(Dimension)的区别是,setSize()方法不会调用revalidate()方法导致重新layout,而只是调用repaint()对所涉及到的“脏”区域进行重绘(repaint)。setPreferredSize()方法可以约等于setSize()方法+revalidate()方法,因为在Figure对getPreferredSize(int,int)的实现里,若该figure没有任何layoutmanager,则返回当前size:
例如当父图形使用XYLayout,子图形使用ToolbarLayout时,假设在子图形里又增加了子子图形(子图形里的子图形),add()方法会导致revalidate()的调用,这时父图形的xylayout将检查子图形是否具有constraint,如果有并且有至少一个方向为-1,则利用子图形上的ToolbarLayout计算出子图形新的尺寸,这个尺寸是和子图形里包含的子子图形的数目有关的(ToolbarLayout会把每个子图形的宽/高度加起来,加上其中间隔的空间,再考虑图形的边框,返回得到的尺寸)。
指出了figure什么时候,调用revalidate()。
发表评论
-
ShortestPathConnectionRouter使用的例子
2013-05-16 15:29 966public class Connection { ... -
Java Draw2d 目录
2013-04-23 15:02 1106Java Draw2d 目录1,helloworld (h ... -
Draw2D Flowchart的教程
2010-11-22 13:00 1404关键字:Draw2D Flowchart 原文链接:htt ... -
Draw2D UML Diagram
2010-11-22 11:06 2139/** * A test class to displa ... -
Draw2d 边界 边框 border
2010-11-20 09:55 1948关键字:Draw2d 边界 边框 border 在Dr ... -
Draw2d 拖拽 Drag and Drop
2010-11-19 21:10 1876关键字:Draw2d 拖拽 Drag and Drop ... -
Draw2d 连线六 路由 Router
2010-11-19 19:42 1658关键字:Draw2d 连线 路由 Router Manhatt ... -
Draw2d 连线五 Locator 标示
2010-11-19 19:26 1086关键字:Draw2d 连线 Locator Connecti ... -
Draw2d 连线四 箭头 Decoration
2010-11-19 19:07 1590关键字:Draw2d 、Decoratio ... -
Draw2d 连线三 锚点 TriangleAnchor
2010-11-19 18:10 2155关键字:Draw2d、锚点、TriangleAnchor ... -
Draw2d 连线二 ChopboxAnchor EllipseAnchor
2010-11-19 16:35 1562关键字:Draw2d,连线,ChopboxAnchor El ... -
Draw2d 连线一
2010-11-19 16:15 1188关键字:Draw2d 连线 PolylineConnectio ... -
Draw2d 学习笔记六 布局管理器 约束(Constraint)
2010-11-19 12:17 1317关键字:Draw2d、布局管理器、约束(Constraint) ... -
Draw2d 学习笔记七 GridLayout布局管理器
2010-11-18 18:22 1295关键字:Draw2d GridLayout 布局管理器Grid ... -
Draw2d 学习笔记五 布局管理器 ScrollPaneLayout ScrollPane
2010-11-18 16:03 2286关键字:Draw2d ScrollPaneLayout Sc ... -
Draw2d 学习笔记四 XYLayout
2010-11-18 15:57 1446XYLayout就是采用绝对坐标来确定子figure的位置和大 ... -
Draw2d 学习笔记一 helloworld
2010-11-18 14:02 1298先来个hellloworld入门啊。 public ... -
Draw2d 学习笔记三 FlowLayout
2010-11-18 14:01 1221public class HelloWorld { p ... -
Draw2d 学习笔记二 BorderLayout
2010-11-18 13:53 1483public class HelloWorld { p ... -
Draw2d 中 Label Clickable ButtonModel的使用
2010-07-27 17:26 1448摘要:Draw2d 实现按钮和标签一样的小控件。 publi ...
相关推荐
本文将深入探讨Draw2d中的几种常见布局管理器,包括BorderLayout、ToolbarLayout、FlowLayout、GridLayout以及XYLayout。 首先,BorderLayout是一种基于五个区域的布局方式,包括顶部(TOP)、底部(BOTTOM)、左侧...
4. **布局管理**:介绍Draw2d的布局管理器,如FlowLayout、GridLayout和StackLayout,以及如何使用它们来组织和排列图形元素。 5. **事件处理**:讲解如何添加鼠标和键盘事件监听器,实现图形元素的交互功能,如...
11. **布局管理**:利用SWT的布局管理器,如`FillLayout`, `GridLayout`, `MigLayout`等,来组织窗口中的组件。 GraFix可能是源码项目的名字,它可能是一个图形修复或图形处理工具的实例,展示了如何在Java中结合...
2. **布局管理器**:在`Draw2DLayoutExample.java`中,布局管理器如`GridLayout`或`FlowLayout`被用来组织和调整图形对象的位置。布局管理器使得图形界面可以根据窗口大小变化自动调整布局,提供良好的用户体验。 3...
注意,学习Draw2d的过程中,理解如何组织和管理Figure之间的关系,以及如何有效地使用布局管理器(如`FlowLayout`、`GridLayout`)也是十分重要的。 总之,"Draw2d画线例子"提供了一个实践Draw2d库的平台,通过这个...
总结,Eclipse Draw2D 提供了丰富的图形绘制和交互功能,通过深入学习和实践"draw2d 示例代码",开发者能够熟练掌握图形界面的开发技术,为构建美观、易用的图形应用打下坚实基础。无论是简单的形状绘制还是复杂的...
Draw2D的布局管理十分灵活,提供了多种布局方式,比如FlowLayout、BorderLayout、ToolbarLayout、GridLayout、StackLayout、DelegatingLayout、XYLayout、ScrollPaneLayout和ViewportLayout。每种布局方式都有其特定...
2. **丰富的图形组件**:包括容器(如Figure和CompositeFigure)、布局管理器(如GridLayout和StackLayout)以及各种预定义的图形元素。 3. **图形事件处理**:支持鼠标和键盘事件,可以为图形对象添加交互性。 4. *...
在本篇“Android学习笔记15:绝对布局管理器AbsoluteLayout”中,我们将深入探讨一种允许开发者精确控制视图位置的布局方式——AbsoluteLayout。尽管在现代Android开发中已经不推荐使用,但在某些特定场景下,它仍然...
但当需要更复杂、更动态的布局时,可能需要考虑其他布局管理器。 总的来说,GridLayout是Android开发中的一个重要工具,了解并熟练掌握其用法对于提升应用的界面设计和用户体验有着积极的作用。通过实践和探索,...
DRAW2D提供了多种布局管理器,如FlowLayout、GridLayout等,可以辅助完成这个任务。 6. **性能优化**:在处理大量图形元素时,高效的滚动条实现能够提高用户体验。这可能涉及到只渲染可视区域内的图形,或者使用...
学习这些布局管理器的使用,不仅能够提高GUI设计的效率,还能确保界面在不同屏幕尺寸和分辨率下的适应性。在实际开发中,常常需要结合使用多种布局管理器,以实现更复杂、更灵活的界面设计。 例如,一个应用程序...
AWT(Abstract Window Toolkit)组件提供了六种布局管理器,分别是BorderLayout、FlowLayout、GridLayout、GridBagLayout、CardLayout和BoxLayout。这些布局管理器可以帮助开发者更好地管理组件在窗口中的排列。 1....
这里使用`GridLayout`布局管理器,以便将输入字段和按钮均匀分布。每个`Text`控件用于接收用户输入,而`Label`控件则作为提示信息。最后,我们创建了一个“Redraw”按钮,当点击该按钮时,会触发画布的重绘,从而...
在Java GUI编程中,布局管理器是至关重要的组成部分,它负责控制组件在窗口中的位置和大小。本资源提供了五种常见的布局管理器的经典例子,帮助开发者更好地理解和运用这些管理器。下面将详细介绍这五种布局管理器...
GridBagLayout 布局管理器和 GridLayout 布局管理器不一样的是,一个组件不只是占一个网格位置,加入组件时,必须指明一个对应的参数。 布局管理器的工作过程是,每个容器保存一个对一个布局管理器的引用,这个布局...
### Swing布局管理器详解 #### 一、布局管理器概览 在Java图形用户界面编程中,Swing作为一套强大的工具包,为开发者提供了丰富的组件和功能,其中布局管理器是构建美观且易于维护的GUI应用程序的关键部分。布局...
Java提供了多种布局管理器,如FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout。FlowLayout是最简单的布局,按照从左到右、从上到下的顺序排列组件。BorderLayout将界面分为五个区域:北、南、东...
本资源包“布局管理器的嵌套.rar”提供了深入讲解这一主题的相关资料,对于想要深入学习Android开发的人来说极具参考价值。 首先,文件“020505_布局管理器的嵌套.avi”很可能是一个视频教程,详细介绍了如何在...