GUI美化I
GUI(用户图形界面)

03
减少了程序中的循环和延时操作,提高了 程序的执行效率。
04
方便实现复杂的交互逻辑和动态界面效果。
多任务和多线程
01
并行处理
02 支持多个任务同时运行和处理,提高了程序的并 发性能和响应速度。
03 可以将耗时的任务放在后台线程中执行,避免阻 塞主线程和影响用户体验。
多任务和多线程
• 提供了线程同步和互斥机制,避免多线程并发访问导致的 数据竞争和死锁问题。
重要性
GUI为用户提供了一种直观、易用的操作方式,使得计算机的使用变得更加便捷 和高效。GUI能够降低用户的学习成本,提高工作效率,并增强用户体验。
GUI的历史和发展
历史
GUI的概念起源于20世纪60年代,最早的图形用户界面是SGI公司为斯坦福大学开发的斯坦福大学图形界面 (Stanford Graphics Interface)。随着计算机技术的不断发展,GUI逐渐成为计算机操作系统和应用程序的标 准界面。
娱乐软件
娱乐软件是一类用于休闲和放松的软件,如 音乐播放器、视频播放器等。GUI在娱乐软 件中扮演着重要的角色,提供了简洁、易用 的界面,使用户能够轻松地享受娱乐内容。
嵌入式系统和专用设备
嵌入式系统
嵌入式系统是一类专用的计算机系统,通常 用于控制和管理特定的硬件设备。GUI在嵌 入式系统中起着重要的作用,提供了直观、 易用的界面,使用户能够方便地与设备进行 交互和控制。
错误处理与提示
GUI应具备完善的错误处 理机制和友好的提示信息, 帮助用户快速解决问题。
适应性与兼容性
GUI应具备良好的适应性 与兼容性,支持不同设备 和浏览器的使用,确保用 户体验的一致性。
美观性原则
视觉层次与布局
JavaGUI编程创建漂亮的用户界面

JavaGUI编程创建漂亮的用户界面JavaGUI编程是一种强大的工具,它可以帮助开发者创建漂亮、直观的用户界面。
在本文中,我将为您介绍如何使用JavaGUI编程来设计和实现一个令人印象深刻的用户界面。
一、选择合适的图形库在开始编写JavaGUI程序之前,我们需要选择一个合适的图形库。
Java提供了多种图形库选项,包括Swing、JavaFX等。
在这里,我将以Swing为例进行演示。
二、设计用户界面设计用户界面是实现漂亮用户界面的第一步。
在设计过程中,我们应该考虑到用户的需求和使用习惯,使界面具有良好的可用性和可访问性。
以下是一些设计原则可以帮助您创建漂亮的用户界面:1. 简洁明了:界面应该简洁明了,避免过多的干扰元素和复杂的图形。
2. 色彩搭配:选择适合的颜色搭配,使界面看起来舒适和谐。
同时要注意颜色的对比度,以确保文字和界面元素的可读性。
3. 布局:合理的布局可以使界面更加整洁美观。
可以使用不同的布局管理器(如FlowLayout、GridBagLayout等)来帮助您实现布局。
4. 图标和图片:适当使用图标和图片可以增加界面的吸引力。
选择高质量的图标和图片,确保其分辨率和大小适合当前界面的需求。
5. 文字字体:选择易读的字体和合适的字号。
正文通常使用宋体、微软雅黑等,标题可以选择一些特殊的字体以增加视觉效果。
三、编写代码一旦您完成了用户界面的设计,接下来就是编写代码来实现这个界面。
下面是一个简单的示例,展示如何使用Swing来创建一个基本的用户界面。
```javaimport javax.swing.*;import java.awt.*;public class GUIExample {public static void main(String[] args) {JFrame frame = new JFrame("漂亮的用户界面");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 300);JPanel panel = new JPanel();panel.setLayout(new FlowLayout());JLabel label = new JLabel("欢迎使用漂亮的用户界面!");label.setFont(new Font("宋体", Font.BOLD, 18));JButton button = new JButton("点击我");button.setPreferredSize(new Dimension(100, 50));panel.add(label);panel.add(button);frame.getContentPane().add(panel);frame.setVisible(true);}}```上述代码演示了如何创建一个简单的用户界面,其中包括一个标签和一个按钮。
gui程序界面设计作业

gui程序界面设计作业
GUI(图形用户界面)程序界面设计是计算机科学和软件工程中非常重要的一部分。
它涉及到设计和创建用户友好的界面,使用户能够直观、方便地与计算机程序进行交互。
在进行GUI程序界面设计时,需要考虑以下几个方面:
1. 用户体验,设计界面时需要考虑用户的习惯和需求,使界面布局合理,操作流畅,符合用户的直觉。
2. 可用性,界面设计应该易于理解和操作,用户能够快速找到需要的功能,并且不会因为界面设计而感到困惑或迷失。
3. 可访问性,界面设计需要考虑到不同用户的需求,包括残障用户,确保他们也能够方便地使用程序。
4. 界面布局,合理的界面布局能够提高用户的工作效率,使用户能够快速找到需要的功能,减少不必要的操作步骤。
5. 可定制性,一些用户可能希望根据自己的需求定制界面,因此界面设计应该考虑到用户的个性化需求。
6. 界面美观,界面设计不仅要实用,还要美观,吸引用户的眼球,提升用户的使用体验。
在进行GUI程序界面设计时,可以使用专业的设计软件如
Adobe XD、Sketch等来进行设计和原型制作,也可以结合用户反馈
进行多次迭代,以确保最终的界面设计能够满足用户的需求。
同时,还需要考虑不同平台的界面设计规范,比如Windows、macOS、iOS
和Android等,以确保界面在不同平台上都能够得到良好的呈现。
Java的GUI设计打造美观直观的用户界面

Java的GUI设计打造美观直观的用户界面Java是一种广泛使用的编程语言,拥有着强大的图形用户界面(GUI)设计能力。
通过使用Java提供的各种GUI库和工具,开发人员可以轻松地创建美观、直观的用户界面。
本文将介绍一些在Java中实现这样的GUI设计的方法和技巧。
一、选择合适的GUI库在Java中,有多个GUI库可供选择,比如Swing、JavaFX等。
选择合适的GUI库是设计美观直观界面的第一步。
Swing是一个成熟的GUI库,提供了丰富的组件和布局管理器,可以满足大部分GUI设计需求。
JavaFX是Java官方推荐的GUI库,它提供了更现代化的界面设计风格和更优秀的性能。
二、使用布局管理器布局管理器是GUI设计中重要的一环,它定义了组件在窗口中的位置和大小。
Java提供了多种布局管理器,如FlowLayout、BorderLayout、GridLayout等。
通过合理选择和组合这些布局管理器,可以实现各种复杂的界面布局。
三、使用合适的图标和图片图标和图片在GUI设计中起着很重要的作用,可以通过它们来提升用户界面的美观性和直观性。
Java提供了处理图标和图片的功能和类库,开发人员可以使用这些功能来加载、处理和显示各种图标和图片。
四、使用合适的颜色和字体颜色和字体也是GUI设计中非常重要的元素,可以用来强调界面的重要信息或者创建特定的视觉效果。
Java提供了各种颜色和字体的类库和功能,可以用来选择合适的颜色和字体样式。
五、增加交互性一个好的用户界面应该具有良好的交互性,能够方便用户进行操作。
Java提供了丰富的事件处理机制和监听器,可以实现交互性功能。
开发人员可以通过监听用户的操作,及时响应并更新界面,实现更好的用户体验。
六、进行界面美化除了以上的基本设计原则,开发人员还可以通过一些额外的技巧来进一步美化用户界面。
比如使用渐变色背景、添加阴影效果、使用动画效果等。
这些技巧可以使界面更加生动、有趣,并提升用户的整体体验。
手机GUI设计基本知识

手机GUI设计基本知识一,什么是 MOBILE GUI设计简单来说就是手持设备的图形用户界面设计,狭义上来看是手机和PPC,广义上可以推广至手机,移动电视,车载系统,手持游戏机,MP3,GPS等一切手持移动设备。
MOBILE GUI的设计基于对手持设备产品的使用特性的理解,对用户的研究和对界面使用情景的深入研究。
GUI的设计分为平台内置和主题设计部分,前者需要专业的DESIGN HOUSE 根据厂家的实际产品进行设计分析后进行整体设计,后者则可以经由任何用户进行自主设计,当然后者的设计限制和平台限制都比较大。
目前索爱和三星以及NOKIA的S60平台支持用户的THEME自定义设计。
设计研究的流程为:产品特性--用户心理--市场背景--图形设计策略--设计检验--实际设计投放二,界面基本要素手机界面层级: idle(待机界面) -- mainmenu(主菜单) -- submenu(二级菜单) -- third level menu(三级菜单)界面除了包括图标和文字外,比较重要的还有function animation (呼叫,发送信息等)以及 function interface(计算器,日历界面等)明确意义的图标,风格鲜明的版面设计是手机界面设计的重要工作,目前较为流行的是以MOTOROLA,NOKIA等为代表的欧洲简单风格,以及韩国的时尚绚丽的风格。
在更新颖的交互操作和与手机ID设计的整体结合上,韩系手机作的比较好,而在可用性和体验难度上,欧系手机则比较优秀。
三,设计注意事项尺寸问题: 128X160, 176X220, 240X320 象素尺寸是目前较常见的手机屏幕尺寸,在设计时可以根据实际产品要求进行设计,更大的屏幕可以有更多的交互表现和视觉元素的支持,较为自由。
色彩问题:由于手机LCD本身的限制,在色彩的还原程度上没有PC如此完善,因此在选用色彩时要根据使用的屏幕进行调节。
可实现性问题:受到硬件运算速度和内存的影响,以及不可预计的后台程序开发难度,过于复杂的效果将很难进行实现,与程序工程师和UI工程师,硬件工程师的沟通显得尤为重要。
pythonGUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例

pythonGUI库图形界⾯开发之PyQt5美化窗体与控件(异形窗体)实例这篇⽂章主要介绍了python GUI库图形界⾯开发之PyQt5美化窗体与控件(异形窗体)实例,需要的朋友可以参考下在默认情况下,我们使⽤PyQt5创建出来的窗⼝和部件都是默认的样式,虽然谈不上很丑,但是也毫⽆美感可⾔。
其实,在PyQt5中,我们可以有较⾼的⾃由度来⾃定义窗⼝和各种⼩部件的样式,通过⾃定义这些样式,以达到美化图形界⾯的⽬的。
本篇⽂章中,我们就通过⼀个实际的例⼦,使⽤QSS和PyQt5的配置属性,实现图形⽤户界⾯的美化⼯作。
⾸先上效果图:⼀、对界⾯进⾏布局和组件的布置在图像界⾯编程中,⼀个好的布局有助于全局把控界⾯的形态,⽽在PyQt5中,有多种布局的⽅式供我们选择,⽐较常⽤的布局有以下⼏种:表单布局:QFormLayout⽹格布局:QGridLayout⽔平排列布局:QHBoxLayout垂直排列布局:QVBoxLayout每种布局都有⾃⼰对布局内⼩部件的控制⽅式和特点,在此我们选择⽹格布局作为本次图形界⾯布局的⽅案。
在⽹格布局内,使⽤两个QWidget()部件分别作为左侧菜单模块的部件和右侧内容模块的部件。
所以这个图形界⾯的最基本结构代码如下所⽰:12 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 32 33 34 35# coding:utf-8from PyQt5 import QtCore,QtGui,QtWidgetsimport sysimport qtawesomeclass MainUi(QtWidgets.QMainWindow):def__init__(self):super().__init__()self.init_ui()def init_ui(self):self.setFixedSize(960,700)self.main_widget =QtWidgets.QWidget() # 创建窗⼝主部件self.main_layout =QtWidgets.QGridLayout() # 创建主部件的⽹格布局self.main_widget.setLayout(self.main_layout) # 设置窗⼝主部件布局为⽹格布局self.left_widget =QtWidgets.QWidget() # 创建左侧部件self.left_widget.setObjectName('left_widget')self.left_layout =QtWidgets.QGridLayout() # 创建左侧部件的⽹格布局层self.left_widget.setLayout(self.left_layout) # 设置左侧部件布局为⽹格self.right_widget =QtWidgets.QWidget() # 创建右侧部件self.right_widget.setObjectName('right_widget')self.right_layout =QtWidgets.QGridLayout()self.right_widget.setLayout(self.right_layout) # 设置右侧部件布局为⽹格self.main_layout.addWidget(self.left_widget,0,0,12,2) # 左侧部件在第0⾏第0列,占8⾏3列 self.main_layout.addWidget(self.right_widget,0,2,12,10) # 右侧部件在第0⾏第3列,占8⾏9列 self.setCentralWidget(self.main_widget) # 设置窗⼝主部件def main():app =QtWidgets.QApplication(sys.argv)gui =MainUi()gui.show()sys.exit(app.exec_())3536 37 38 39if__name__ =='__main__': main()运⾏代码,呈现出来的图形界⾯如下图所⽰:空空荡荡,下⾯我们就开始往⾥⾯填充⼩部件。
GUI的基础知识总结
图形用户界而GUI (Graph i cal User Interfaces)就是一种用户与计算机进行信息交流得工具与方法川I各种图形对象组成,在这种用户界而卜;用户得命令与对程序得控制就是通过鼠标等输入设备''选择"各种图形对象来实现得。
软件开发者只需在曲软件开发工具门动生成得程庠代码中添加门己得运算或控制代码,就町以完成应用程序得设计。
□前90%以上得应用程序与软件都就足在GUI卜•运行得。
血MATLA B有两种GUI用户界面控件得创建方式,基丁命令行得编程方式制作与基丁•MAT LAB提供得图形用户界面开发坏境GUIDE中得图形用户界而开发工具得GUI创建方式制作.这里主要介绍基r- GUIDE得创建方式。
在GUI得设计中应注意在面板上进行按钮得静态布S时一宦要事先预算好按钮得个数.更重耍得一点就是如果您放冒了1个按钮井且对此按钮得屈性进行了某种操作,那么该按钮得痕迹将永远保存在您所建得而板上,您将该按钮删除,然后重新建一个按钮,并将其屈性值设置与上一个按钮一模一样,那并不能保证您将上一按钮覆盖,在程序进行运行得过程中它只会识别上一按钮(已经删除得按钮),而您将上一按诳得删除则造成程序运行中得错误或就是得不到您预想得界面效果,为了避免这种情况,在进行设计得时候对任一按钮屈性得设置不要与己经剧除按钮得屈性相同.Matla b为GUI设计一共准备了4种模板,分别就是:^BlankGUI(Default)(空白模板,默认): ©GUI with Uicontrols (带控件对象得GUI 模板);bGUIwith Axes and M e n u (带坐标轴与菜单得GUI模板);^Modal Quest! o n D i a 1 og (带模式问题对站框得GUI模板)。
並肖用户选择不同得模板时,在G UI设计模板界面得右边就会显示出与该模板对应得GUI图形。
在GUI设计模板中选中一个模板,然后单击OK按钮,就会显示GUI设计窗口。
gui界面设计
GUI界面设计:打造美观易用的用户交互体验一、设计原则:以人为本,关注用户体验1. 简洁明了:界面布局应清晰有序,避免冗余信息,让用户一目了然。
2. 一致性:遵循统一的设计规范,保持界面元素风格的一致性,降低用户学习成本。
3. 易用性:充分考虑用户操作习惯,简化操作流程,提高操作便捷性。
4. 美观性:色彩搭配和谐,字体大小适中,图标形象生动,提升视觉体验。
二、设计步骤:从需求分析到界面实现1. 需求分析:了解用户需求,明确界面设计的目标和功能模块。
2. 架构设计:梳理界面信息架构,划分功能区域,确定界面布局。
4. 视觉设计:根据原型设计,进行界面配色、图标、字体等视觉元素的设计。
5. 交互设计:优化界面交互逻辑,确保用户操作流畅,提升用户体验。
6. 评审与修改:邀请团队成员进行评审,收集反馈意见,对界面设计进行修改和完善。
7. 实现与测试:将设计稿转化为实际代码,进行界面实现,并进行功能测试和用户体验测试。
三、设计要点:细节决定成败,打造精致界面1. 图标设计:图标应简洁易懂,具有辨识度,能够直观传达功能含义,避免使用过于复杂的图案。
2. 文字排版:合理安排文字间距,行距和段落间距,确保阅读舒适度。
与层次分明,突出重点信息。
3. 色彩运用:运用色彩心理学,选择合适的颜色搭配,营造界面氛围,同时注意色彩对比度,保障文字可读性。
4. 动效设计:适当运用动效,提升界面活力,引导用户操作,但要注意动效时长和流畅度,避免过度使用导致干扰。
四、交互逻辑:智能化引导,提升操作效率1. 反馈机制:为用户提供及时、明确的操作反馈,如按钮效果、加载动画等,让用户了解操作结果。
2. 错误处理:设计合理的错误提示,帮助用户快速定位问题,并提供解决方案。
3. 智能提示:在用户操作过程中,提供必要的提示和帮助,如输入框提示、操作指南等,降低用户操作难度。
4. 个性化定制:允许用户根据个人喜好调整界面布局和功能模块,满足不同用户的需求。
LabVIEW中的GUI设计与美化
LabVIEW中的GUI设计与美化LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种流行的图形化编程语言和系统设计平台,广泛应用于工业自动化、实验室测量和控制等领域。
本文将探讨LabVIEW中的GUI设计与美化,旨在帮助读者提升LabVIEW应用程序的用户体验。
一、设计原则与指导在进行GUI设计和美化之前,我们需要了解一些基本的设计原则和指导,以便能够创造出简洁、直观和易用的用户界面。
下面列出了几个重要的方面:1.一致性:保持界面的一致性对于用户来说非常重要。
使用相同的颜色、字体和布局样式,确保不同的界面元素之间没有突兀感。
2.简洁性:在设计界面时,应避免过度设计和信息的过载。
只展示最关键和必要的信息,保持界面的简洁性,让用户能够快速而轻松地完成任务。
3.易用性:用户界面应该是直观和易于理解的。
按钮、滑块和选择框等控件的功能应该与其外观一致,以便用户可以轻松地使用和操作。
二、界面布局与风格1.布局设计:在设计界面布局时,我们可以选择使用网格布局或自由布局。
网格布局允许我们将控件和元素放置在规则的网格单元中,使界面更整齐和统一。
自由布局则更加灵活,可以根据需求调整控件的位置和大小。
2.颜色与主题:选择合适的颜色与主题能够有效地增强界面的吸引力和可读性。
可以选择明亮而饱和的颜色来吸引用户的注意力,或使用浅色背景与深色前景形成对比,提高文字和控件的可读性。
3.图标与图像:适当使用图标和图像可以帮助用户快速理解界面的功能和操作。
选择清晰、简洁的图标,并确保其与其他元素的样式和风格相匹配。
三、控件设计与优化1.按钮设计:按钮是最常用的控件之一,我们可以通过设计各种不同的按钮样式来增强界面的美观度。
可以为按钮添加阴影、边框和鼠标悬浮效果,使按钮在被点击时有明显的反馈。
2.滑块与选择框:滑块和选择框通常用于调节数值范围或进行选项选择。
GUI设计 - 副本
赤峰学院物理与电子信息工程系
20
三、例6信号的拉氏反变换
fs=get(findobj('tag','fs') ,'strin g'); fs=sym(fs); axes(handles.axes1) cla ezplot(fs) grid on answer=char(ilaplace(fs)); set(handles.ft,'string',answer ); ft=sym(get(handles.ft,'string')) axes(handles.axes2) cla ezplot(ft) gridon
赤峰学院物理与电子信息工程系 22
三、例8信号的z反变换
syms n z fz=get(findobj('tag','fz') ,'strin g'); fz=sym(fz); answer=char(iztrans(fz,z,n)); set(handles.fn,'string',answer ); fn=sym(get(handles.fn,'string ')) axes(handles.axes1) cla n=0:1:10; fn=2.^n.*n stem(n,fn,'filled') grid on
赤峰学院物理与电子信息工程系 25
三、例10二阶电路网络的频率响 应
cla hm=abs(h); plot(w,hm); xlabel('w)'); ylabel('hm'); grid on axes(handles.axes2) cla hp=angle(h)*180/pi; plot(w,hp); xlabel('w)'); ylabel('hp'); grid on
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java2D 基础
Graphics2D 对象
public void Paint (Graphics g) { Graphics2D g2 = (Graphics2D) g; ... }
Graphic2D 渲染上下文
Stroke
Fill
Composite Transform
Clip
Rendering hints
public void actionPerformed(ActionEvent ae) {
// 得到流逝时间
long currentTime = ae.getWhen(); long elapsedTime = currentTime - startTime;
// 利用得到的信息计算新的动画位置 }
图形合成
AlphaComposite 类包装了各种合成形式
AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC); g2d.setComposite(ac);
SRC_OVER
SRC_IN
SRC_OUT
DST_OVER
DST_IN
SRC_OUT
CLEAR
定时器
javax.swing.Timer
// 创建并启动定时器
startTime = System.currentTime(); timer = new Timer(msBetweenCallbacks, actionListener); timer.start();
// 定时器回调 actionPerformed() 方法
UserTransferHandler(Cont.)
public Transferable createTransferable(JComponent c) { TreePath path = tree.getSelectionPath(); if (path == null) { return null; } Object obj = path.getLastPathComponent(); if (obj instanceof User) { return new UserTransferable((User)obj); } return null; }
整体的立体效果
正中的头像最近
> 位置定为 0.0
最43;1.0, -1.0
对于之间的任何一个头像
> 两个参数:头像大小,头像透明度 > 按照高斯分布计算权值,决定上述参数
步骤
1 - 人家闺女怎么打扮 ? 2 - 准备工作 :Java2D 简介 3 - 第一印象相当重要:美化登录界面 4 - 更温柔体贴:改变联系人列表 5 - 有趣也很重要:新的对话窗口
例子 - 圆长方形剪切椭圆
private Ellipse2D ellipse = new Ellipse2D.Float(); private Rectangle2D rect = new Rectangle2D.Float(); ellipse.setFrame(x, y, ew, eh); g2.setClip(ellipse); rect.setRect(x+5, y+5, ew-10, eh-10); g2.clip(rect);
演示
改善后的登录界面
万事大吉了?
大多数用户都会感到满意 界面看上去不错,简洁易用 但是 ...... 算得上有趣吗?
让我们做一下超级美容!
演示
超级登录界面
运用超级界面美容术
效果真的全是 Java 做出来的? Java2D API 的应用 > Gradients > AlphaComposites > 硬件加速 定制 JFC/Swing 控件 定制布局 定时器(动画效果)
操作上的问题
让管理联系人变得方便
利用 JSF/Swing 中的拖拽 (Drag&Drop) API
> 打开拖拽设置 tree.setDragEnabled(true); > 设置 Drop Mode ( 6.0 中的新特性) tree.setDropMode(DropMode.INSERT); > 自定义一个 TransferHandler 来管理节点 tree.setTransferHandler( new UserTransferHandler());
外观上的问题
似是而非的 Windows 界面
采用定制的 PasswordView
passwordField.setUI(new BasicPasswordFieldUI() { public View create(Element elem) { return new PasswordViewXP(elem); } }); private class PasswordViewXP extends PasswordView { protected int drawEchoCharacter(Graphics g, int x, int y, char c) { g.fillOval(x, y, width, width); } }
外观上的问题
> 似是而非的 Windows 外观
相当的无趣
操作上的问题
这是什么程序?
这是程序的第一个界面 需要
> 提示程序的名称 > 提示程序的用途
操作上的问题
我的账号在哪里?
按姓名对账号进行排序 利用 ListCellRenderer
> 对于奇数偶数行采用不同的背景色 > 为每一个账号设置图标
操作上的问题
我是使用快捷键的高级用户
为按钮设置快捷键
accountsButton.setMnemonic('A');
将登录按钮设置成缺省操作
frame.getRootPane().setDefaultButton(loginButton);
将焦点设在密码框
passwordField.requestFocusInWindow()
MediumTreeCellRenderer (Cont.)
public void paintComponent(Graphics g) { if (!isLeaf) { GradientPaint gp = new GradientPaint(0, 0, c1, 0, getHeight(), c2, true); ((Graphics2D)g).setPaint(gp); g.fillRect(0, 0, getWidth(), getHeight()); } ...... if (isLeaf) { Icon statusIcon = getStatusIcon(user.getStatus()); icon.paintIcon( this, g, getWidth() - icon.getIconWidth(), (getHeight() - icon.getIconHeight()) / 2); } }
步骤
1 - 人家闺女怎么打扮 ? 2 - 准备工作 :Java2D 简介 3 - 第一印象相当重要:美化登录界面 4 - 更温柔体贴:改变联系人列表 5 - 有趣也很重要:新的对话窗口
演示
素面朝天的登录界面
问题出在什么地方?
操作上的问题
> 这是什么程序? > 我的账号在哪里? > 我是使用快捷键的高级用户
步骤
1 - 人家闺女怎么打扮 ? 2 - 化妆品介绍 :Java2D 3 - 第一印象相当重要:美化登录界面 4 - 更温柔体贴:改变联系人列表 5 - 有趣也很重要:新的对话窗口
Gaim
Miranda
MSN Messenger
演示
咱们家闺女什么样?
步骤
1 - 人家闺女怎么打扮 ? 2 - 化妆品介绍 :Java2D 3 - 第一印象相当重要:美化登录界面 4 - 更温柔体贴:改变联系人列表 5 - 有趣也很重要:新的对话窗口
演示
平实的联系人列表
问题出在什么地方?
操作上的问题
> 所有的联系人看上去都差不多,甚至无法分清
联系人跟联系人组的区别 > 无法知道联系人的连线状态 > 管理联系人非常麻烦
同样相当的无趣
操作上的问题
定制的 TreeCellRenderer 可以
> > > >
给所有联系人组不同的外观 区分不同的联系人 为每个联系人绘制各自的图标 通过第二个图标表示联系人的在线信息
桌面上的 Java SE : GUI 超级美容术(一)
沈卓立 (Joey Shen) Technology Evangelist Sun Microsystems Inc.
步骤
1 - 人家闺女怎么打扮 ? 2 - 化妆品介绍 :Java2D 3 - 第一印象相当重要:美化登录界面 4 - 更温柔体贴:改变联系人列表 5 - 有趣也很重要:新的对话窗口
MediumTreeCellRenderer
扩展DefaultTreeCellRenderer
private User user = null; public Component getTreeCellRendererComponent(...) { super.getTreeCellRendererComponent(...); if (value instanceof User) { user = (User)user; } setIcon(user != null ? user.getBuddyIcon() : null); return this; }
分层组合
StackLayout 介绍
分层组合
使用 StackLayout