package abstractfactory;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.image.BufferedImage;
import java.net.URL;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JSplitPane;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
public class SkinUI extends JFrame{
/*
* 初始化界面
*/
//定义标签
// 创建面板
JPanel panel = new JPanel();
JLabel label_1;
JButton button_1;
ZiTi z;
_Color c;
_Picture p;
AbstractSkinFactory factory;
public SkinUI() {
init();
reset(2);
}
public void reset(int level) {
label_1.setSize(500, 200);
label_1.setLocation(270,10);
button_1.setSize(500, 200);
button_1.setLocation(270,10);
if(level==1) {
label_1.setForeground(Color.YELLOW); // 字体颜色
factory = new SkinFactoryA();
}
if(level==2) {
label_1.setForeground(Color.BLACK); // 字体颜色
factory = new SkinFactoryB();
}
if(level==3) {
factory = new SkinFactoryC();
label_1.setForeground(Color.GREEN); // 字体颜色
}
z =factory.createZiTi();
//label_1.setFont(new Font("微软雅黑", Font.BOLD, 60));
label_1.setFont(new Font(z.getZiTi(), Font.BOLD, 60));
c = factory.createBackgroundColor();
panel.setBackground(c.getColor());
p = factory.createLogoPicture();
this.setIconImage(Toolkit.getDefaultToolkit().getImage(SkinUI.class.getResource("/image/"+p.getPicture())));
}
public void init() {
this.setSize(1000, 500); // 设置窗口大小
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 点击关闭按钮是关闭并退出
this.setLocationRelativeTo(null); // 窗口居中显示
this.setResizable(false); // 窗口大小不可变
// 设置菜单栏
JMenuBar menubar = new JMenuBar();
// 在当前界面中添加菜单栏
this.setJMenuBar(menubar);
// 创建菜单放到菜单栏中
JMenu menu = new JMenu("选择皮肤");
menubar.add(menu); // 在菜单栏中添加此菜单
// 在菜单栏中添加菜单项
JRadioButtonMenuItem radioItem = new JRadioButtonMenuItem("皮肤A(粉色,微软黑体,logoA)");
menu.add(radioItem); // 在菜单中添加此菜单项
JRadioButtonMenuItem radioItem1 = new JRadioButtonMenuItem("皮肤B(蓝色,宋体,logoB)");
radioItem1.setSelected(true); // 设置中级的选中状态为选中
menu.add(radioItem1); // 在菜单中添加此菜单项
JRadioButtonMenuItem radioItem2 = new JRadioButtonMenuItem("皮肤C(黑色,仿宋,logoC)");
menu.add(radioItem2); // 在菜单中添加此菜单项
// 此时三个可以同时选中,不符合我们的要求。这个时候需要将这个三个三选按钮放到一个组中
// 同一个组中的单选按钮同一时刻只能选中一个
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(radioItem);
buttonGroup.add(radioItem1);
buttonGroup.add(radioItem2);
// 给单选按钮绑定事件
radioItem.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == 1) { // 选中A
reset(1);
}
}
});
radioItem1.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == 1) { // 选中B
reset(2);
}
}
});
radioItem2.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == 1) { // 选中C
reset(3);
}
}
});
panel.setLayout(null);
//panel.setBackground(Color.blue);
// 添加标签
label_1 = new JLabel("祝自己天天开心");
// button_1 = new JButton("点击预定");
// panel.add(button_1);
panel.add(label_1);
this.setContentPane(panel);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
使用抽象工厂模式创建皮肤工厂,用子工厂的产品去实例化 用的Jframe 图片放在与代码根目录同级目录 打开eclipse运行Client_Start即可运行 左上角下拉菜单显示选择皮肤 不同的字体,背景颜色,窗口图标 抽象工厂模式是一种创建型设计模式,它提供了一种将相关的对象家族分组创建的方式,而无需指定具体类。在该模式中,我们定义一个抽象工厂接口,该接口声明了一组创建不同类型对象的方法。每个具体工厂都实现了这个接口,并负责创建一组特定类型的相关对象。 使用抽象工厂模式的主要目的是将对象的创建与使用相分离,从而提供了一种灵活的方式来创建对象家族,而不必指定具体的类。这可以使系统更具可扩展性和可维护性,因为可以轻松地添加新的具体工厂和产品类。 抽象工厂模式通常适用于以下场景: 系统需要独立于其产品的创建、组合和表示。 系统需要多个产品系列,并且希望保持一致性。 系统需要提供一个产品类的库,而不公开其实现细节。 系统需要遵循开闭原则,以便能够轻松地扩展新的产品系列。 我们可以实例化不同的产品,而不需要在客户端代码中直接指定具体的类。这样可以使系统更加灵活,轻松地添加新的产品
资源推荐
资源详情
资源评论
收起资源包目录
抽象工厂设计模式作业.zip (22个子文件)
abstractfactory
Picture_B.java 146B
Color_A.java 157B
Color_B.java 156B
SkinFactoryB.java 299B
SkinFactoryC.java 298B
ZiTi_B.java 125B
Picture_A.java 143B
Color_C.java 157B
SkinClient.java 541B
ZiTi_A.java 151B
SkinFactoryA.java 299B
Picture_C.java 143B
ZiTi_C.java 123B
_Picture.java 97B
AbstractSkinFactory.java 190B
SkinUI.java 4KB
Client_Start.java 234B
_Color.java 115B
ZiTi.java 89B
image
大熊猫.png 10KB
小鸡仔.png 8KB
小猫咪.png 11KB
共 22 条
- 1
资源评论
白开水为啥没味
- 粉丝: 561
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功