TWaver - 专注UI技术
http://twaver.servasoft.com/
posts - 171, comments - 191, trackbacks - 0, articles - 2
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
Applet中避免单类模式使用UI组件
Posted on 2010-08-29 09:14
TWaver
阅读(1241)
评论(0)
编辑
收藏
单类为了啥:保证实例唯一;提供全局函数;减少内存消耗;…. 也许还有很多很多用途,不过在Applet的使用中一定要避免UI组件单类的设计模式:
1、主要原因是如果Applet被重新加载,也就是点击浏览器的刷新按钮,或者在同一个浏览器下关闭Applet再打开的情况下,新的Applet将以新的Swing toolkit threads对键盘事件进行处理,这样以前缓存的单UI实例组件将再也接收不到键盘事件。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4339842
2、当然还有另外一个问题就是Swing的组件只能在一个容器中呈现,无法让两个容器同时展示同一个UI组件,简单的理解就是说如果你在一个浏览器中新开一个同session的窗口将会导致只有一个窗口能显示单类的组件,另一个的UI组件将会丢失。
1
import
java.awt.BorderLayout;
2
import
java.awt.GridLayout;
3
4
import
javax.swing.JApplet;
5
import
javax.swing.JPanel;
6
import
javax.swing.JTextArea;
7
import
javax.swing.border.TitledBorder;
8
9
class
SinglePanel
extends
JPanel
{
10
private
final
static
SinglePanel instance
=
new
SinglePanel();
11
public
static
SinglePanel getInstance()
{
12
return
instance;
13
}
14
private
SinglePanel()
{
15
TestApplet.initPanel(
this
,
"
single panel
"
);
16
}
17
}
18
19
class
MultiPanel
extends
JPanel
{
20
public
static
MultiPanel getInstance()
{
21
return
new
MultiPanel();
22
}
23
public
MultiPanel()
{
24
TestApplet.initPanel(
this
,
"
multi panel
"
);
25
}
26
}
27
28
public
class
TestApplet
extends
JApplet
{
29
30
public
void
init()
{
31
JPanel contentPane
=
new
JPanel(
new
GridLayout(
2
,
1
));
32
contentPane.add(SinglePanel.getInstance());
33
contentPane.add(MultiPanel.getInstance());
34
this
.setContentPane(contentPane);
35
}
36
37
public
static
void
initPanel(JPanel panel, String title)
{
38
panel.setLayout(
new
BorderLayout());
39
panel.setBorder(
new
TitledBorder(title));
40
panel.add(
new
JTextArea(), BorderLayout.CENTER);
41
}
42
}
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
Powered by:
BlogJava
Copyright © TWaver
日历
<
2010年8月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
公告
TWaver中文社区
TWaver中文论坛
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(14)
给我留言
查看公开留言
查看私人留言
随笔档案
(171)
2017年6月 (1)
2017年5月 (1)
2016年12月 (3)
2016年11月 (6)
2015年5月 (4)
2015年4月 (1)
2015年3月 (4)
2015年2月 (5)
2015年1月 (6)
2014年12月 (2)
2014年11月 (1)
2014年10月 (5)
2014年9月 (5)
2014年8月 (3)
2014年7月 (3)
2014年6月 (1)
2014年5月 (1)
2013年7月 (10)
2013年1月 (2)
2012年12月 (3)
2012年11月 (4)
2012年10月 (2)
2012年9月 (2)
2012年8月 (7)
2012年7月 (3)
2012年6月 (5)
2012年5月 (10)
2012年3月 (6)
2012年2月 (4)
2012年1月 (2)
2011年12月 (3)
2011年10月 (2)
2011年9月 (1)
2011年7月 (2)
2011年3月 (2)
2011年2月 (1)
2010年12月 (3)
2010年11月 (5)
2010年10月 (2)
2010年9月 (19)
2010年8月 (19)
文章档案
(2)
2015年4月 (1)
2014年6月 (1)
新闻档案
(1)
2014年9月 (1)
相册
TWaver 视频
搜索
最新随笔
1. VR技术在数据中心3D机房中的应用 (下)
2. VR技术在数据中心3D机房中的应用(上)
3. HTML5数据可视化第四弹:可交互地铁线路图
4. 10个TWaver网页3D可视化精彩案例
5. HTML5数据可视化第三弹:萌萌哒拓扑图分组
6. TWaver3D拓扑图之人在江湖
7. TWaver3D拓扑图之球花绽放
8. 一款最新的Web 3D开发工具—TWaver Make
9. 两步创建3D数据中心
10. HTML5数据可视化第二弹:打造最美3D机房
11. HTML5数据可视化第一弹:彩虹爆炸图
12. HTML5复杂拓扑图(五) Reingold Tilford树
13. HTML5复杂拓扑图(四) 组织结构图
14. HTML5复杂拓扑图(三) 可伸展流程图
15. HTML5复杂拓扑图(二) 关系网图
最新评论
1. re: HTML5复杂拓扑图(五) Reingold Tilford树
评论内容较长,点击标题查看
--司马青衫
2. 我们需要TWaver导入导出AutoCAD DXF图纸功能请问哪里有下载开发包?
我们的项目需要TWaver导入导出AutoCAD DXF图纸功能请问哪里有下载开发包?
我的邮箱是:1391211019@qq.com
--曾晓南
3. re: TWaver Flex生成在Android设备上的安装包(apk文件)
评论内容较长,点击标题查看
--婚纱摄影工作室推荐
4. re: 3D特效之高光反射
这个有点意思的
--流量村
5. re: HTML5复杂拓扑图(五) Reingold Tilford树
现在一般用第三方的更合理些
--流量村
阅读排行榜
1. HTML5 WebSocket 技术介绍(12085)
2. TWaver版3D化学元素周期表(6827)
3. 如何在MONO 3D寻找最短路路径(6677)
4. HTML5复杂拓扑图(五) Reingold Tilford树(6620)
5. 解析JSON数据生成TWaver中的网元(5983)
评论排行榜
1. TWaver版3D化学元素周期表(25)
2. TWaver html5 + NodeJS + express + websocket.io + redis 快速搭建项目(一)(9)
3. Mono Design Demo展示(6)
4. TWaver Flex生成在Android设备上的安装包(apk文件)(6)
5. 在MONO Design中使用Flex3D(5)