第三周用组合设计模式编写程序
发布于: 2020 年 10 月 02 日
package com;import java.util.ArrayList;/****************************** * 用途说明: * 作者姓名: chenshijie * 创建时间: 2020/10/02 17:40 ******************************/public abstract class Component { private String name; private java.util.List<Component> components = new ArrayList<Component>(); public Component(String name) { this.name = name; } public void update() { paint(); for(Component component : components) { component.update(); } } public abstract void paint(); public void addComp(Component component) { this.components.add(component); } public String getName() { return name; }}
package com;/****************************** * 用途说明: * 作者姓名: chenshijie * 创建时间: 2020/10/02 18:17 ******************************/public class Window extends Component { public Window(String name) { super(name); } public void paint() { System.out.println("print WinForm("+this.getName()+")"); }}
package com;/****************************** * 用途说明: * 作者姓名: chenshijie * 创建时间: 2020/10/02 18:21 ******************************/public class Button extends Component { public Button(String name) { super(name); } public void paint() { System.out.println("print Button("+this.getName()+")"); }}
package com;/****************************** * 用途说明: * 作者姓名: chenshijie * 创建时间: 2020/10/02 18:19 ******************************/public class Picture extends Component { public Picture(String name) { super(name); } public void paint() { System.out.println("print Picture("+this.getName()+")"); }}
package com;/****************************** * 用途说明: * 作者姓名: chenshijie * 创建时间: 2020/10/02 18:26 ******************************/public class Frame extends Component { public Frame(String name) { super(name); } public void paint() { System.out.println("print Frame("+this.getName()+")"); }}
package com;/****************************** * 用途说明: * 作者姓名: chenshijie * 创建时间: 2020/10/02 18:27 ******************************/public class Label extends Component { public Label(String name) { super(name); } public void paint() { System.out.println("print Label("+this.getName()+")"); }}
package com;/****************************** * 用途说明: * 作者姓名: chenshijie * 创建时间: 2020/10/02 18:27 ******************************/public class TextBox extends Component { public TextBox(String name) { super(name); } public void paint() { System.out.println("print TextBox("+this.getName()+")"); }}
package com;/****************************** * 用途说明: * 作者姓名: chenshijie * 创建时间: 2020/10/02 18:28 ******************************/public class PasswordBox extends Component { public PasswordBox(String name) { super(name); } public void paint() { System.out.println("print PasswordBox("+this.getName()+")"); }}
package com;/****************************** * 用途说明: * 作者姓名: chenshijie * 创建时间: 2020/10/02 18:29 ******************************/public class CheckBox extends Component { public CheckBox(String name) { super(name); } public void paint() { System.out.println("print CheckBox("+this.getName()+")"); }}
package com;/****************************** * 用途说明: * 作者姓名: chenshijie * 创建时间: 2020/10/02 18:30 ******************************/public class LinkLabel extends Label { private String link; public LinkLabel(String name,String link) { super(name); this.link = link; } public void paint() { System.out.println("print Label("+this.getName()+")"); }}
package com;/****************************** * 用途说明: * 作者姓名: chenshijie * 创建时间: 2020/10/02 18:31 ******************************/public class Test { public static void main(String[] args) { Window window = new Window("WINDOW窗口"); Picture picture = new Picture("LOGO图片"); Button loginButton = new Button("登录"); Button regButton = new Button("注册"); Frame frame = new Frame("FRAME1"); Label nameLabel = new Label("用户名"); TextBox textBox = new TextBox("文本框"); Label passLabel = new Label("密码"); PasswordBox passwordBox = new PasswordBox("密码框"); CheckBox checkBox = new CheckBox("复选框"); TextBox remember = new TextBox("记住用户名"); LinkLabel linkLabel = new LinkLabel("忘记密码","www.google.com"); window.addComp(picture); window.addComp(loginButton); window.addComp(regButton); window.addComp(frame); frame.addComp(nameLabel); frame.addComp(textBox); frame.addComp(passLabel); frame.addComp(passwordBox); frame.addComp(checkBox); frame.addComp(remember); frame.addComp(linkLabel); window.update(); }}
窗口组件的树结构如下所示。
print WinForm(WINDOW窗口)
print Picture(LOGO图片)
print Button(登录)
print Button(注册)
print Frame(FRAME1)
print Label(用户名)
print TextBox(文本框)
print Label(密码)
print PasswordBox(密码框)
print CheckBox(复选框)
print TextBox(记住用户名)
print Label(忘记密码)
划线
评论
复制
发布于: 2020 年 10 月 02 日 阅读数: 19
Geek_fabd84
关注
还未添加个人签名 2019.06.30 加入
还未添加个人简介
评论