通过统一设置界面中所有组件的字体和颜色可以简单的实现“换肤”功能。
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
public class GuiTool {
/**
* 统一设置字体和颜色
* @param Comp 组件(容器)
* @param font 字体
* @param back 背景色
* @param fore 前景色
*/
public static void setGlobalFontAndColor(Component Comp,Font font,Color back,Color fore) {
Comp.setFont(font);
Comp.setBackground(back);
Comp.setForeground(fore);
if (Comp instanceof Container) {
Component[] components = ((Container)Comp).getComponents();
for (int i = 0; i < components.length; i++) {
Component child = components[i];
setGlobalFontAndColor(child,font,back,fore);
}
}
}
public static Font getFont(String s_type,String s_style,int size){
int tyle = Font.PLAIN;
if(s_style.equals("Blod")){
tyle = Font.BOLD;
}else if(s_style.equals("Italic")){
tyle = Font.ITALIC;
}
return new Font(s_type,tyle,size);
}
public static Color[] getColor(String colorze){
Color[] colors = new Color[2];
colors[0] = Color.BLACK;
colors[1] = Color.WHITE;
if(colorze!=null){
if(colorze.equals("黑-红")){
colors[0] = Color.BLACK;
colors[1] = Color.RED;
}
if(colorze.equals("灰-绿")){
colors[0] = Color.LIGHT_GRAY;
colors[1] = Color.GREEN;
}
if(colorze.equals("粉-蓝")){
colors[0] = Color.PINK;
colors[1] = Color.BLUE;
}
if(colorze.equals("橙-紫")){
colors[0] = Color.ORANGE;
colors[1] = Color.MAGENTA;
}
if(colorze.equals("青-黄")){
colors[0] = Color.CYAN;
colors[1] = Color.YELLOW;
}
}
return colors;
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ThemeStyle extends JFrame{
private JPanel p1,p2;
private JLabel l1,l2,l3;
private JComboBox type,style,size,color;
private JCheckBox reset;
private JScrollPane sp;
private JTextArea ta;
private JButton b;
public ThemeStyle() {
init();
display();
this.setTitle("Java简单实现换肤功能");
this.setLocationRelativeTo(null);//窗口居中
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void init(){
String[] s_type = {"宋体","Serif","Dialog",};
String[] s_style = {"Plain","Blod","Italic"};
String[] s_size = {"9","10","11","12","13","14","15"};
String[] s_color = {"黑-白","黑-红","灰-绿","粉-蓝","橙-紫","青-黄"};
p1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
p2 = new JPanel();
l1 = new JLabel("设置字体:");
l2 = new JLabel("设置颜色:");
reset = new JCheckBox("窗口自适");
reset.setToolTipText("窗口大小自动适应");
type = new JComboBox(s_type);
style = new JComboBox(s_style);
size = new JComboBox(s_size);
size.setSelectedItem("12");
color = new JComboBox(s_color);
color.setToolTipText("背景色-前景色");
size.setMaximumRowCount(5);
ta = new JTextArea();
sp = new JScrollPane(ta);
sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
b = new JButton("OK");
l3 = new JLabel("<html><hr>Developed by Kinganpo in Shanghai.2011-01-17 <hr></html>");
p1.add(l1);
p1.add(type);
p1.add(style);
p1.add(size);
p1.add(l2);
p1.add(color);
p1.add(reset);
p1.add(b);
p2.add(l3);
add(p1,BorderLayout.NORTH);
add(sp,BorderLayout.CENTER);
add(p2,BorderLayout.SOUTH);
ta.setText("利用统一改变界面所有组件的字体及颜色来实现简单的换肤功能!\n" +
"setGlobalFontAndColor(Component Comp,\n" +
"Font font,Color back,Color fore)\n" +
"遍历组件进行统一设置\n" +
"再setVisible(true)显示出来!\n" +
"================================\n\n");
ta.setLineWrap(true);
ta.setEditable(false);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
display();
}
});
}
public void display(){
this.dispose();
String s_type = (String)type.getSelectedItem();
String s_style = (String)style.getSelectedItem();
int s_size = Integer.parseInt((String)size.getSelectedItem());
Font font = GuiTool.getFont(s_type, s_style, s_size);
Color[] colors = GuiTool.getColor((String)color.getSelectedItem());
GuiTool.setGlobalFontAndColor(this,font,colors[0],colors[1]);
if(reset.isSelected()){
this.pack();
}else{
this.setSize(600,450);
}
ta.append(font.toString()+"\n");
ta.append(colors[0].toString()+"\n");
ta.append(colors[1].toString()+"\n\n");
this.setVisible(true);
}
public static void main(String[] args) {
new ThemeStyle();
}
}
虽然不是真正意义上的换肤,但是效果自认为还是可以的。今天找了几个swing风格包,突发奇想就弄了这个简单的。代码简单明了留着纪念啦!(*^__^*) 嘻嘻……
- 大小: 19 KB
- 大小: 21.1 KB
分享到:
相关推荐
"仿QQ换肤功能"是一个常见的需求,特别是在社交应用和桌面软件中,它允许用户根据个人喜好更改应用的外观和主题颜色,从而提高用户的满意度和使用体验。下面将详细介绍这个功能的实现原理和相关技术。 首先,换肤...
1. **Symbian系统的主题**:Symbian系统早期提供了一种简单的主题更换功能,但其灵活性和自定义程度相对较低。 2. **Android系统下的主题**: - **XML声明主题/样式**:通过XML文件定义主题和样式,程序可以通过...
例如,用加载的皮肤图像替换控件默认的背景,用皮肤颜色设置字体颜色。 此外,为了方便管理和维护,可以设计一个皮肤管理类,负责加载、应用和切换皮肤,同时提供接口供其他部分代码调用。这样,整个程序的界面风格...
(2) 基于UIView的分类实现:利用UIView的分类记录换肤方法,统一重写样式设置。换肤时由管理中心发送通知,组件自动执行换肤。这种方法减少了代码修改,但可能影响性能。 总结,iOS应用的动态换肤方案设计需要综合...
因此,皮肤设计和实现时需考虑各种平台的差异,如字体、颜色和图像渲染等方面。 通过以上介绍,我们可以看到在Qt4.8.2中实现界面换肤是一个涉及多方面技术的工作,包括QSS的使用、皮肤设计、事件处理、资源管理、...
通过学习和理解这个实例,开发者可以掌握在C++中实现换肤功能的基本步骤和技术,进一步提升自己的软件开发技能。对于想要深入研究GUI编程和用户体验设计的程序员来说,这是一个非常有价值的实践项目。
在C#编程中,换肤和改变字体颜色、大小是常见的用户界面(UI)定制功能,可以提升软件的用户体验和视觉吸引力。以下是对这个主题的详细解析: 首先,C#中的用户界面通常基于Windows Forms或WPF(Windows ...
在VB6(Visual Basic 6)环境中,程序员可以利用各种技术来实现程序窗体界面的换肤功能,提升用户体验和视觉吸引力。VB6虽然相对较老,但仍然被许多企业和开发者用于开发桌面应用程序。本篇文章将深入探讨如何在VB6...
在iOS应用开发中,夜间模式(也称为换肤设置)是一项重要的功能,它允许用户根据个人喜好或环境光线切换到暗色主题。Swift语言提供了多种方法来实现这一特性。本篇将详细介绍如何在Swift中实现夜间模式,并探讨相关...
在本文中,我们将深入探讨如何使用Visual Studio 2017和C# WPF技术来实现应用程序的换肤功能,从而为用户提供丰富的视觉体验。WPF(Windows Presentation Foundation)是微软.NET Framework的一部分,它提供了强大的...
- **主题(Themes)**:主题是一组预定义的样式规则,用于统一网站中各个元素的外观,如颜色、字体和布局。它们通常存储在`App_Themes`目录下的`.skin`或`.css`文件中。 - **皮肤(Skins)**:皮肤是更具体的设计...
在Android开发中,"摇一摇换肤...以上就是"Android摇一摇换肤"功能的核心技术点和实现流程。在压缩包中的"新建文件夹"可能包含了源码、资源文件和相关文档,通过研究这些内容,你可以更深入地理解这一功能的具体实现。
这通常涉及到改变控件的背景色、边框样式、字体颜色等,确保界面的统一性。 5. **皮肤XML格式**:为了方便管理和交换皮肤,可以将皮肤数据存储为XML文件。XML的结构化特性使得皮肤数据易于解析和编辑,同时也方便了...
"ASP换皮肤"指的是在ASP应用程序中实现用户界面的可定制化,允许用户根据个人喜好选择不同的界面风格,如字体、字体大小、颜色、背景以及图片等元素。这通常涉及到前端界面的设计与后端数据的处理。 1. **CSS(层叠...
此换肤模块是为运行在.NET 4.0环境的应用程序设计的,这意味着它利用了该版本的特性和API来实现其功能。 "Silver"这个标签可能指的是两个方面:一是可能与Silverlight有关,Silverlight是微软的一个已弃用的Web应用...
"DevExpress.WinForm.Skins" 是 DevExpress 提供的一个组件,用于在Windows Forms应用程序中实现皮肤定制和更换功能。这个"devexpress.winform.skins换肤DEMO"应该是一个演示项目,旨在帮助开发者理解并学习如何在...
在这个文件中,你可以定义特定控件的属性,如颜色、字体、大小等,这些设置会被所有引用该皮肤的控件继承。 3. **创建皮肤**:创建皮肤文件首先需要在App_Skins目录下创建一个新的`.skin`文件,然后在文件中定义...
4. **动态换肤功能**:实现窗体的动态换肤,需要编写代码来加载和应用不同的皮肤设置。这可能涉及到读取皮肤文件,更新控件的属性,以及处理皮肤切换时的动画效果。一种常见的实现方式是使用控件容器,将所有界面...
7. **资源文件与皮肤配置**: 为了实现换肤,开发者需要将各种界面元素如图片、颜色和字体等存储为资源文件,并编写代码解析这些资源以动态改变界面。这可能涉及XML或JSON格式的配置文件。 8. **动画和过渡效果**: ...
它的核心功能在于解析皮肤文件,将皮肤元素与控件进行绑定,从而改变控件的外观,如颜色、字体、边框样式等。 在"皮肤文件"中,包含了各种预设的皮肤样式。这些文件通常是以XML格式存储的,里面定义了各个控件的...