ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:144.01KB ,
资源ID:29033230      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29033230.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(高级java实验报告GUI设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

高级java实验报告GUI设计.docx

1、高级java实验报告GUI设计实 验 报 告课程名称 高级java程序设计 实验项目 实验 3 Java 高级 GUI 实验仪器 系 别 计算机学院 专 业 软件工程 班级/学号 实验日期 成 绩 指导教师 【实验名称】实验 3 Java 高级 GUI【实验目标】 1、学习和掌握 JavaBeans 的基本实现方法和应用情形。2、学习和掌握 MVC 模式以及实现方法。3、学习和了解 Java 提供的各种容器、组件及其应用效果。【实验日期和时间记录】 实验日期12月【实验预习】 1、学习和掌握基本程序的结构和实现方法。2、学习和掌握 JavaBeans 和 MVC 的基本概念和实现方法。3、 在

2、基本程序的基础上, 使用新的技术, 实现更复杂的程序【实验过程及结果记录】 1、(信息面板 MessagePanel 触发事件 ActionEvent)在程序清单 15.7-.8 中(上册 P414-418,“15.9 实例学习:MessagePanel类”一节),信息面板类 MessagePanel 是 JPanel 类的一个类,它可以触发事件 MouseEvent、KeyEvent 和 ComponentEvent,但不能触发ActionEvent。修改 MessagePanel 类,使得单击它的实例时能够触发ActionEvent 事件。将新类命名为 MessagePanelWithAc

3、tionEvent。使用一个 Applet 来测试该类,单击信息面板时在其中显示当前时间实验结果:2、 (修改 CircleController) 根据程序清单 35.1-35.4,CircleController 用文本域获取新的半径,用组合框获取表明圆是否是实心的布尔值。在 CircleController 中加入一行,使用户可以用 JColorChooser 组件选择颜色,如图 3.2 所示。新的行包括写有文本 Color 的标签,要显示颜色的标签和一个省略号按钮。用户可以通过单击省略号按钮来显示 JColorChooser 对话框。 一旦用户选择了颜色,颜色便显示在省略号按钮左边面板的

4、背景上。说明:程序实现的基本思路和方法。(1)学习程序清单 35.1-35.4, MVC 程序的构造以及测试方法。(2)对 CircleController(程序清单 35.3 P402)进行相应的修改,包括:静态 GUI 的修改,增加颜色控制组件;动态事件处理的修改,增加对颜色控制按钮的事件处理,弹出颜色选择对话框,选择颜色,使用该颜色设置颜色标签,反映颜色变化。(3)对 CircleController 进行修改, 在颜色控制按钮的事件处理中, 使用控制器得到的用户颜色, 修改对应的 CircleModel 对象的颜色属性设置。(4)运行程序,启动用户测试程序 MVCDemo.java(程

5、序清单35.4,教材 P403),分别打开控制器和视图,观察控制器是如何控制视图变化的。实验结果【实验总结】对于自身薄弱的GUI知识有了进一步的理解,对于如何实现逻辑功能与界面结合有了自己的一套方法。并能利用javabeans和mvc解决一些问题。【思考题的思考】 【思考题】1、 JavaBeans 的基本结构要求有哪些?MessagePanel 是JavaBeans 组件(类)吗?什么是源组件?MessagePanel 是源组件吗?JavaBeans 一定是源组件吗?反之,源组件一定是 JavaBeans 吗?JavaGUI 组件是 JavaBeans 吗?是源组件吗?答:bean必须是公共

6、类,尽管bean可能有其他的构造方法,但是必要时必须有一个公共的无参构造方法,bean必须实现java.io.Serializable,以确保其持续性。等等;不是;源组件包含用于检测引发事件外部或内部动作的代码。不是;不一定;不是;不是;不是;2、如何创建一个自定义的源组件?答:先定义事件接口检测事件通过调用向量中每个监听器的事件处理器来出发和处理事件3、在练习 2 的 MVC 实现中,Controller 如何从用户获得信息、修改 Model?Model 是如何将状态变化通知给 View? View 是如何根据 Model 变化来进行相应地显示的?这个 MVC 的起点在哪里?答:jtfRad

7、ius.getText().doubleValue() 从输入中获取。然后修改model.setFilled( (Boolean)jcbFilled.getSelectedItem().booleanValue()。通知给view:if(model.isFilled() g.fillOval(xCenter - radius, yCenter - radius,2 * radius,2 * radius); else g.drawOval(xCenter - radius, yCenter - radius,2 * radius,2 * radius); 【附:程序代码】 习题1:Messag

8、ePanelWithActionListener类:package sy3;import java.awt.Dimension;import java.awt.FontMetrics;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.util.ArrayList;import javax.swi

9、ng.JPanel;public class MessagePanelWithActionListener extends JPanel implements MouseListener private String message = Welcome to Java; private int xCoordinate = 20; private int yCoordinate = 20; private boolean centered; private int interval = 10; private ArrayList actionListenerList; public Messag

10、ePanelWithActionListener() this.addMouseListener(this); public MessagePanelWithActionListener(String message) this.message = message; this.addMouseListener(this); public void setMessage(String message) this.message = message; repaint(); public int getXCoordinate() return xCoordinate; public int getY

11、Coordinate() return yCoordinate; public void setXCoordinate(int x) this.xCoordinate = x; repaint(); public void setYcoordinate(int y) this.yCoordinate = y; repaint(); public boolean isCentered() return centered; public void setCentered(boolean centered) this.centered = centered; repaint(); public in

12、t getInterval() return interval; public void setInterval(int interval) this.interval = interval; protected void paintComponent(Graphics g) super.paintComponent(g); if(centered) FontMetrics fm = g.getFontMetrics(); int stringWidth = fm.stringWidth(message); int stringAscent = fm.getAscent(); xCoordin

13、ate = getWidth() / 2 - stringWidth / 2; yCoordinate = getHeight() / 2 - stringAscent / 2; g.drawString(message, xCoordinate, yCoordinate); public void moveLeft() xCoordinate -= interval; repaint(); public void moveRight() xCoordinate += interval; repaint(); public void moveUp() yCoordinate -= interv

14、al; repaint(); public void moveDown() yCoordinate += interval; repaint(); public Dimension getPreferredSize() return new Dimension(200,30); public synchronized void addActionListener(ActionListener listener) if(actionListenerList = null) actionListenerList = new ArrayList(2); if(!actionListenerList.

15、contains(listener) actionListenerList.add(listener); public synchronized void removeActionListener(ActionListener listener) if(actionListenerList != null & actionListenerList.contains(listener) actionListenerList.remove(listener); public void mouseClicked(MouseEvent e) / TODO Auto-generated method s

16、tub processEvent(new ActionEvent(this,ActionEvent.ACTION_PERFORMED,null); public void mousePressed(MouseEvent e) / TODO Auto-generated method stub public void mouseReleased(MouseEvent e) / TODO Auto-generated method stub public void mouseEntered(MouseEvent e) / TODO Auto-generated method stub public

17、 void mouseExited(MouseEvent e) / TODO Auto-generated method stub private void processEvent(ActionEvent e) ArrayList list; synchronized(this) if(actionListenerList = null) return; list = (ArrayList)actionListenerList.clone(); for(int i = 0;i list.size(); i+) ActionListener listener = (ActionListener

18、)list.get(i); listener.actionPerformed(e); TestMessagePanelWithMouseListener类:package sy3;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;import javax.swing.JApplet;public class TestMessagePanelWithMouseListener extends JApplet private MessagePanelWithActi

19、onListener messagePanel = new MessagePanelWithActionListener(); public TestMessagePanelWithMouseListener() this.add(messagePanel); messagePanel.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) messagePanel.setCentered(true); messagePanel.setMessage(new java.util.Date

20、().toString(); ); public static void main(String args) JApplet applet = new TestMessagePanelWithMouseListener(); JFrame frame = new JFrame(TestMessagePanelWithMouseListener); frame.add(applet); frame.setSize(300,200); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_C

21、LOSE); frame.setVisible(true); 习题2:CircleModel类:package sy3;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;public class CircleModel private double radius = 20; private boolean filled; private java.awt.Color color; private ArrayList actionListenerLis

22、t; public double getRadius() return radius; public void setRadius(double radius) this.radius = radius; processEvent(new ActionEvent(this,ActionEvent.ACTION_PERFORMED,radius); public boolean isFilled() return filled; public void setFilled(boolean filled) this.filled = filled; processEvent(new ActionE

23、vent(this,ActionEvent.ACTION_PERFORMED,filled); public java.awt.Color getColor() return color; public void setColor(java.awt.Color color) this.color = color; processEvent(new ActionEvent(this,ActionEvent.ACTION_PERFORMED,color); public synchronized void addActionListener(ActionListener l) if(actionL

24、istenerList = null) actionListenerList = new ArrayList(); actionListenerList.add(l); public synchronized void removeActionListener(ActionListener l) if(actionListenerList != null & actionListenerList.contains(l) actionListenerList.remove(l); private void processEvent(ActionEvent e) ArrayList list; s

25、ynchronized(this) if(actionListenerList = null) return; list = (ArrayList)actionListenerList.clone(); for(int i = 0;i list.size();i+) ActionListener listener = (ActionListener)list.get(i); listener.actionPerformed(e); CircleController类:package sy3;import java.awt.BorderLayout;import java.awt.Color;i

26、mport java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JColorChooser;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;public

27、 class CircleController extends JPanel private CircleModel model; private JTextField jtfRadius = new JTextField(); private JComboBox jcbFilled = new JComboBox(new Booleannew Boolean(false),new Boolean(true); private JButton jbColor = new JButton(.); private JColorChooser jcc = new JColorChooser(); p

28、ublic CircleController() JPanel panel1 = new JPanel(); panel1.setLayout(new GridLayout(2,1); panel1.add(new JLabel(Radius); panel1.add(new JLabel(Filled); JPanel panel2 = new JPanel(); panel2.setLayout(new GridLayout(2,1); panel2.add(jtfRadius); panel2.add(jcbFilled); JPanel panel3 = new JPanel(); final JPanel panelColor = new JPanel(); panel3.setLayout(new GridLayout(1,3); panel3.add(new JLabel(Color); panel3.add(panelColor); panel3.add(jbColor); setLayout(new BorderLayout();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1