`
carlkkx
  • 浏览: 16407 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

swing灵活和重用的艺术: renderer/editor

阅读更多
    说到GUI类库的重用有一个很著名的模式:Composite模式。对,一个现代面向对象GUI类库基本上都有这个模式的实现,当然也包括swing.不过早一点如MFC就没有完整的实现,现在来看如果一个GUI类库连基本的Composite模式都没有实现基本上感觉是出土的文物啦!
   但是我们来看即便有了Composite模式,但Composite模式通常是构建静态组合,如果要动态的替换一个复合组件内部的子元素如何办呢?如此一来这个组件就只能定义自己的布局形式,而不能定死在这个布局形式内的元素。
   其实从用户角度来说一个GUI元素通常就是两种情况:要么就是表现,要么就是处于和用户交互状态.这是它们的形态通常不一样。所以组件不仅仅要只定义自己的布局形式,还要给于外部机会来配置当自己的子元素处于这两种状态时相应的UI组件是什么!
  
  swing通过renderer/editor达到了这种灵活性。如swing中JTable,JList,JTree等组件都只是定义了自己的布局形式。并且都可以配置renderer/editor,这样你的renderer/editor实现就接管了组件里面元素的表现形式和交互形态。 理论上你可以用任何JComponent作为组件里面元素的表现形式和交互形态。
分享到:
评论

相关推荐

    Unity游戏框架FrameWork

    1. **游戏对象与组件**:在Unity中,游戏世界由一系列游戏对象(GameObject)组成,每个对象可以包含多个组件(Component),如Transform(变换)、Mesh Renderer(网格渲染器)、Collider(碰撞器)等。框架可能...

    Nature Renderer 2021Perpetual License 2021.1.6 已添许可证,可直接使用!

    Nature Renrderer是个强大的插件,它本身就可以作为地形编辑的工具取代Unity的地形细节和树木的渲染系统。使用方法官网上有,https://v3.visualdesigncafe.com/nature-renderer/docs/2021/installation也可以参考我...

    VTemplate及例子

    它为开发者提供了一种灵活的方式来构建可重用的代码片段,这些片段可以根据不同的数据源进行填充和定制。在.NET开发环境中,VTemplate可以极大地提高开发效率,特别是在处理大量重复性内容生成时。 VTemplate的核心...

    html转pdf所需要的jar各个版本

    - 图像处理:图片的大小、分辨率和格式可能会影响PDF的质量和大小。 - 字体问题:某些字体可能不被PDF阅读器支持,需确保使用的是公共字体或嵌入字体。 - 性能优化:对于大量HTML转换,需要考虑性能优化,如批量...

    Pixi.js动画插件pixi-action.zip

    var renderer = new PIXI.autoDetectRenderer(800,600); document.body.appendChild(renderer.view); var stage = new PIXI.Container(); var sprite1 = new Sprite(resources['res/img/animal.png']....

    使用vue3+RenderAPI开发的一个飞机大战网页游戏源码.zip

    实现了自定义的vue Renderer,渲染使用pixijs 三、目的: 需求驱动学习vue3+pixijs 以开发小游戏的形式去完善Renderer 四、飞机大战玩法: 1、启动: yarn serve 2、访问: http://localhost:8080/ 3、构建:yarn build...

    图表大屏展示-layui.zip

    <meta name="renderer" content="webkit"> 园区重点数据</title> <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min....

    android_renderer:渲染器(Android)

    Java・・・repositories { maven { url 'https://github.com/ucreates/android_renderer/raw/master/repository/java/renderer/gles1' }}・・・dependencies { compile 'com.ucreates:renderer:1.0.0' } 2.在...

    android应用内打开pdf

    总的来说,通过`PdfViewPager`和`PdfRenderer`,开发者可以在Android应用中实现轻量级的PDF查看功能,避免了引入大型库带来的负担。然而,这种方式可能需要更多的自定义工作,以满足特定的用户交互需求。在实际开发...

    Line Renderer) 组件绘制直线,曲线,圆弧

    线渲染器 (Line Renderer) 组件采用 3D 空间中两个或多个点的数组,在每个点之间绘制一条直线。可以使用线渲染器 (Line Renderer) 来绘制从简单直线到复杂螺旋线的任何线条。 这条线始终是连续的;如果需要绘制两条...

    unity2D游戏开发小案例

    9. **调试与优化**:Unity Editor提供了强大的调试工具,如Profiler,用于检查性能瓶颈和内存占用,帮助我们优化代码和资源。 通过深入研究"2DGameLearn"中的内容,你将能够逐步掌握这些知识点,从而构建出自己的2D...

    Android PDF阅读完美支持

    - 管理内存:注意释放`Page`和`PdfRenderer`对象,防止内存泄漏。 2. **性能优化**: - 使用`Surface`进行渲染:为了提高性能,可以创建一个`Surface`,并将`Page`渲染到`Surface`上,而不是每次滚动时都创建新的...

    C# 实现SDL2进行视频播放窗口截图和字幕添加

    使用SDL2进行视频播放窗口截图和字幕添加操作 SDL API查看:https://wiki.libsdl.org/APIByCategory 视频截图 我就废话不多说了,大家还是直接看代码吧~ /// /// SDL2截图操作类 /// </summary> public unsafe...

    flyingsaucer转html为PDF(中文可用)

    4. **渲染到PDF**:最后,调用`renderer.layout`和`renderer.createPDF`方法生成PDF文件。例如: ```java renderer.layout(); FileOutputStream fos = new FileOutputStream("output.pdf"); renderer.createPDF...

    linux sdl 库和头文件

    SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); ``` 4. **图形渲染**:SDL提供了一套丰富的绘图API,可以用来绘制2D图形,如矩形、线条和图像。例如,你可以创建一个SDL...

    Python库 | HTMLrenderer-0.0.6-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:HTMLrenderer-0.0.6-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Three.js基础部分学习

    To actually be able to display anything with Three.js, we need three things: A scene, a camera, and a renderer so we can render the scene with the camera. 3.场景 A scene、相机a camera、渲染器

    高度可定制的库,用于构建基于节点的交互式 UI、编辑器、流程图和图表

    您可以轻松实现自定义节点类型,它带有小地图和图形控件等组件。 请随意查看示例或阅读博客文章以开始使用。 网站:https://reactflow.dev 文档:https://reactflow.dev/docs 示例:https://reactflow.dev/examples ...

    jqplot 中文配置说明

    - `xaxis` 和 `yaxis`:指定数据点所属的 x 轴和 y 轴。 - `label`:数据点的标签。 - `color`:数据点的颜色。 - `lineWidth`:数据点连线的宽度。 - `shadow`:是否显示阴影。 - `shadowAngle`:阴影的角度...

    electron-setImmediate-test

    电子组立即测试 ...cd electron-setImmediate-test /Applications/Electron.app/Contents/MacOS/Electron . ...[19685:0613/093232:INFO:renderer_main.cc(200)] Renderer process started [19686:061

Global site tag (gtag.js) - Google Analytics