




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实用标准实验报告课程名称:JAVA程序设计学生 姓名: 孙文浩 班 级 计算机141学 号14416122学院(系):信息数理学院指导教师: 吕猛实验时间:2016 年 J2 月_6日实验名称:实验五 基于Swing的图形用户界面开发实验文档大全实验五 基于Swing的图形用户界面开发实验一实验内容(1)完成开发界面如图所示,实现如下功能选中“查看已有名片”按钮,程序处于查看状态,可以在“名片列表”中选择要查看的名片,程序在“名片详实信息”栏显示该名片的详实信息,此状态中名片信息处于不可编辑状态选中“添加新名片"按钮,程序处于添加状态,所有关于明天信息的项目都处于可编辑状 态,设置完
2、成相关信息后,单击“添加”按钮,在“名片列表”中出现新添加名片的名称。 单击“清空”按钮可以清空还没提交的内容在查看状态和添加状态下,都可以通过点击“爱好”、“学历”单选按钮以显示名片的不同附加信息(备注:名片附加信息部分,当点击“爱好”按钮时显示的如图1所示,当点击“学历”按钮时显示如图2所示。)(2)记事本设计与实现3)如图所示(1)编程实现如图所示的界面(2)实现文件、编辑、格式、查看,帮助菜单( 实现记事本的基本功能二实验目的(1) 理解组件的分类(2) 掌握容器、布局管理器、普通组件的使用(3) 理解事件处理机制的工作原理(4) 掌握事件的添加和功能代码的编写方法三实验过程(1) 问
3、题分析答:名片的设计除了使用最基本的组件,如 JButton,Jlist,JCheckBox, JTextField, JRadioButton, CardLayout以外,最主要的是逻辑事件的编写,在成功布局完见面后, 就需要编写事件处理。首先,由于是名片信息,保存着一个人的基本信息,所以可以用一个类来表示,如PersonInf类,其次,由于是多个人的信息,可以通过 ArrayList来存放类;其次就是当点击按钮的时候,正确添加和显示信息,此处用到cardLayout布局,可以减少界面的复杂度,在使用JList的时候,除了加滚动条意外,还需要listModel 获取数据等。(2) 代码编写答
4、:(1)public class PersonInf publicStringyourname ;publicStringaddress1 ;public publicStringStringaddress2 ;email ;publicStringsing = null ;publicStringdance = null ;publicStringweb = null ;publicStringfootball = null ;publicStringbasketball = nullpublicStringvolleyball= nullpublicStringxueshi = null
5、;publicStringshuoshi = null ;publicStringboshi = null ;publicStringqita = null ;address2, StringString volleyball,public PersonInf(String yourname, String addressl, String email, String sing, String dance, String web, String football, String basketball, String xueshi,String shuoshi,String boshi, Str
6、ing qita) super ();this . yourname = yourname;this . address1 = address1;this . address2 = address2;this . email = email;this . sing = sing;this . dance = dance;this . web = web;this . football = football;this . basketball= basketball;this . volleyball= volleyball;this . xueshi = xueshi;this . shuos
7、hi = shuoshi;this . boshi = boshi;this . qita = qita; import java.awt.BorderLayout;import javax.swing.*;import java.awt.*;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;importjavax.swing.JInternalFrame;importjavax.swing.JRadioButt
8、on;importjavax.swing.JLayeredPane;importjavax.swing.JSplitPane;importjavax.swing.BorderFactory;importjavax.swing.Box;importjavax.swing.DefaultListModel;importjava.awt.Component;importjavax.swing.border.SoftBevelBorder;importjavax.swing.event.ListSelectionEvent;importjavax.swing.event.ListSelectionLi
9、stener;importjavax.swing.border.BevelBorder;importjavax.swing.JLabel;importjavax.swing.JTextField;importjavax.swing.JButton;importjavax.swing.border.EtchedBorder;importjavax.swing.JFormattedTextField;importjavax.swing.JSpinner;importjavax.swing.JTable;importjavax.swing.JList;importjavax.swing.JScrol
10、lPane;importjava.awt.Color;importjavax.swing.JTextArea;importjava.awt.event.ActionListener;importjava.awt.event.ItemEvent;importjava.awt.event.ItemListener;importjava.util.ArrayList;importjava.awt.event.ActionEvent;importjava.awt.CardLayout;publicclass card extends JFrame privateJPanelcontentPane ;p
11、ublicJTextFieldnametext ;publicJTextFieldaddress1testpublicJTextFieldaddress2testpublicJTextFieldemailtest ;publicJButtonaddmessagebuttonpublicJButtonclearbutton ;privateJList list ;JJJ/学历,爱好,添加新名片,查看名片的按钮private JRadioButton rdbtnNewRadioButton_2privateJRadioButtonrdbtnNewRadioButton_3publicJRadioB
12、uttonrdbtnNewRadioButton_1publicJRadioButtonrdbtnNewRadioButtonprivateJPanel panel_4 ;/学历和爱好内的多选项publicJCheckBoxsingbox ;publicJCheckBoxdancebox ;publicJCheckBoxwebbox ;publicJCheckBoxfootballboxpublicJCheckBoxbasketballboxpublicJCheckBoxvolleyballboxpublicJCheckBoxxueshibox ;publicJCheckBoxboshibox
13、 ;publicJCheckBoxshuoshiboxpublicJCheckBoxqitabox ;ListSelectionModellistSelectionModelCardLayout mycard ; /用于切换爱好和学历卡片/定义默认的list模型=new DefaultListModel。;DefaultListModel defaultListModel/* Launch the application. */public static void main(String口 args) EventQueue. invokeLater ( new Runnable() publi
14、c void run() try card frame = new card();frame.setVisible( true ); catch (Exception e) e.printStackTrace(););/* Create the frame.*/窗体的构造函数,用于设定相关组件并且添加事件,合理安排组建的位置 public card() setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 464, 338);contentPane = new JPanel();contentPane .setBo
15、rder(new EmptyBorder(5, 5, 5, 5);setContentPane(contentPane );contentPane .setLayout(null );JPanel panel =new JPanel();panel.setBounds(0, 0, 459, 316);contentPane .add(panel);panel.setLayout( null );Box horizontalBox = Box. createHorizontalBox ();horizontalBox.setBounds(131, 203, 121, -41);panel.add
16、(horizontalBox);Box horizontalBox_1 = Box. createHorizontalBox ();horizontalBox_1.setBounds(0, 0, 1, 1);panel.add(horizontalBox_1);JPanel panel_1 = new JPanel();panel_1.setBounds(16, 27, 166, 66);panel_1.setBorder(BorderFactory.createLoweredSoftBevelBorder ();panel.add(panel_1);rdbtnNewRadioButton_1
17、 = new JRadioButton( "查看已有名片");rdbtnNewRadioButton_1 .setSelected( true );panel_1.add( rdbtnNewRadioButton_1 );rdbtnNewRadioButton_1 .addActionListener( new“添加新名片“);new cardseechangelistener();cardseechangelistener();rdbtnNewRadioButton= new JRadioButton(panel_1.add( rdbtnNewRadioButton );
18、 rdbtnNewRadioButton.addActionListener(ButtonGroup group2 = new ButtonGroup();group2.add(rdbtnNewRadioButton);group2.add( rdbtnNewRadioButton );JPanel panel_2 = new JPanel();panel_2.setBorder( new SoftBevelBorder(BevelBorder.LOWERED null , nullnull , null );panel_2.setBounds(194, 27, 248, 182);panel
19、.add(panel_2);panel_2.setLayout( null );JLabel lblNewLabel = new JLabel("姓名");lblNewLabel.setBounds(34, 13, 61, 16);panel_2.add(lblNewLabel);nametext = new JTextField();nametext .setBounds(100, 8, 130, 26);panel_2.add( nametext );nametext .setColumns(10);address1test = new JTextField();add
20、ress1test .setColumns(10);address1test.setBounds(100, 36, 130, 26);panel_2.add(address1test);JLabel label = new JLabel("地址");label.setBounds(34, 41,61, 16);panel_2.add(label);address2test = new JTextField();address2test .setColumns(10);address2test.setBounds(100, 64, 130, 26);panel_2.add(a
21、ddress2test);JLabel label_1 = new JLabel("联系地址"); label_1.setBounds(28, 69, 61, 16);panel_2.add(label_1);JLabel label_2 = new JLabel("电子邮件"); label_2.setBounds(28, 97, 61, 16);panel_2.add(label_2);emailtest = new JTextField();emailtest .setColumns(10);emailtest .setBounds(100, 92
22、, 130, 26);panel_2.add( emailtest );rdbtnNewRadioButton_2 = new JRadioButton("爱好");rdbtnNewRadioButton_2 .setBounds(18, 125, 61, 16);panel_2.add( rdbtnNewRadioButton_2 );rdbtnNewRadioButton_2 .addActionListener( new cardchangelistener();rdbtnNewRadioButton_3 = new JRadioButton("学历&quo
23、t;);rdbtnNewRadioButton_3 .setBounds(18, 153, 61, 16);panel_2.add( rdbtnNewRadioButton_3 );rdbtnNewRadioButton_3 .addActionListener( new cardchangelistener();ButtonGroup group1 = new ButtonGroup();group1.add(rdbtnNewRadioButton_2);group1.add(rdbtnNewRadioButton_3);addmessagebutton= new JButton("
24、;添力口");addmessagebutton.addActionListener( new addmessagebuttonlistener();addmessagebutton .setBounds(123, 121, 85, 27); panel_2.add( addmessagebutton );/清空按钮,点击时触发清空的事件 clearbutton= new JButton("清空");clearbutton .addActionListener( new ActionListener() publicvoid actionPerformed(Acti
25、onEvent e) if (e.getSource() = clearbutton ) singbox .setSelected( false ); dancebox .setSelected( false ); webbox .setSelected( false ); footballbox .setSelected( false ); basketballbox .setSelected( false ); volleyballbox .setSelected( false );xueshibox .setSelected( false ); shuoshibox .setSelect
26、ed( false ); boshibox .setSelected( false ); qitabox .setSelected( false );nametext .setText( "");addressltest .setText("");address2test .setText(""); emailtest .setText( ""););clearbutton .setBounds(123, 149, 85, 27);panel_2.add( clearbutton );clearbutton.set
27、Enabled( false );addmessagebutton.setEnabled( false );JPanel panel_3 = new JPanel();panel_3.setBorder( new SoftBevelBorder(BevelBorder.LOWERED null , nullnull , null );panel_3.setBounds(16, 123, 166, 187);panel.add(panel_3);panel_3.setLayout( null );list = new JList();list .setModel( defaultListMode
28、l Ilist .setBounds(19, 82, 85, 87);listSelectionModel= list .getSelectionModel();listSelectionModel.addListSelectionListener(new SharedListSelectionHandler();JScrollPane scrollPane =new JScrollPane( list );scrollPane.setBounds(6, 6, 154, 175);panel_3.add(scrollPane);panel_4 = new JPanel();panel_4 .s
29、etBounds(194, 232, 248, 78);panel.add( panel_4 );mycard = new CardLayout();panel_4 .setLayout( mycard );JPanel panel_5 =new JPanel();LOWERED null , nullpanel_5.setBorder(new SoftBevelBorder(BevelBorder.null , null );panel_4 .add(panel_5);panel_5.setLayout( null );singbox = new JCheckBox("唱歌&quo
30、t;);singbox .setBounds(6, 16, 66, 23);panel_5.add( singbox );dancebox = new JCheckBox("跳舞");dancebox .setBounds(82, 16, 66, 23);panel_5.add( dancebox );webbox = new JCheckBox("上网"); webbox .setBounds(160, 16, 66, 23); panel_5.add( webbox);footballbox = new JCheckBox("足球"
31、;);footballbox .setBounds(6, 41, 66, 23);panel_5.add( footballbox );basketballbox basketballboxpanel_5.add(volleyballbox volleyballbox panel_5.add(=new JCheckBox("篮球");.setBounds(82, 41,66, 23);basketballbox );=new JCheckBox("排球");.setBounds(160, 41, 66, 23);volleyballbox );nullJ
32、Panel panel_6 =new JPanel();panel_6.setBorder(new SoftBevelBorder(BevelBorder.LOWERED nullnull , null );panel_4 .add(panel_6);panel_6.setLayout( null );xueshibox = new JCheckBox("学士 ");xueshibox .setBounds(16, 16, 75, 23);panel_6.add( xueshibox );boshibox = new JCheckBox("博士 ");
33、boshibox .setBounds(16, 49, 83, 23);panel_6.add( boshibox );shuoshibox = new JCheckBox("硕士 "); shuoshibox .setBounds(111, 16, 75, 23);panel_6.add( shuoshibox );qitabox = new JCheckBox("其他");qitabox .setBounds(111,49, 111, 23);panel_6.add( qitabox );nametext .setEnabled( false );a
34、ddressltest.setEnabled(false );address2test.setEnabled(false );emailtest .setEnabled( false );JLabel lblNewLabel_1 = new JLabel("选择动作"); lblNewLabel_1.setBounds(16, 6, 61, 16);panel.add(lblNewLabel_1);JLabel lblNewLabel_2 = new JLabel("名片详细信息”); lblNewLabel_2.setBounds(194, 6, 84, 16)
35、;panel.add(lblNewLabel_2);JLabel lblNewLabel_3 = new JLabel("名片附加信息”); lblNewLabel_3.setBounds(191, 214, 87, 16);panel.add(lblNewLabel_3);JLabel lblNewLabel_4 = new JLabel("名片列表");lblNewLabel_4.setBounds(16, 105, 61, 16);panel.add(lblNewLabel_4); public ArrayList <PersonInf>item
36、s = new ArrayList<>();personinf 类中list 中);/当点击添加按钮时,将文本编辑框及多选框中的信息保存到新建的/并且将每个新建的 personinf 放到Arraylist 中,只将名字显示到 class addmessagebuttonlistenerimplements ActionListenerOverridepublic void actionPerformed(ActionEvent e) / TODOAuto-generated method stubif (e.getSource() = addmessagebutton ) Sys
37、tem. out .println( "you add addmessagebutton"String dance = null ;String sing = null ;String web = null ;String football =null ;String basketball =null ;String volleyball =null ;String xueshi =String shuoshi =String boshi =String qita =null ;null ;null ;null ;if (singbox .isSelected()sing
38、= singbox .getText();if (dancebox .isSelected()dance = dancebox .getText();if (webbox .isSelected()web = webbox .getText();if (footballbox .isSelected()football =footballbox.getText();if (basketballbox.isSelected()basketball = basketballbox .getText();if (volleyballbox .isSelected()volleyball = voll
39、eyballbox .getText();if (xueshibox .isSelected()xueshi = xueshibox .getText();if (shuoshibox .isSelected()shuoshi = shuoshibox .getText();if (boshibox .isSelected()boshi = boshibox .getText();if (qitabox .isSelected()qita = qitabox .getText();PersonInf pl = new PersonInf( nametext .getText(), addres
40、sltest .getText(), address2test .getText(), emailtest.getText(),sing,dance,web,football,basketball,volleyball,xueshi,shuoshi,boshi,qita);items .add(p1);defaultListModel .addElement( "名字为:"+p1. yourname ); /此处用于判断是选择爱好卡片还是学历卡片class cardchangelistener implements ActionListener Overridepublic
41、 void actionPerformed(ActionEvent e) / TODOAuto-generated method stub /如果选择的是爱好,则显示爱好的界面 if (rdbtnNewRadioButton_2 .isSelected() mycard .next( panel_4 ); /如果是选择学历,则显示学历的界面 if (rdbtnNewRadioButton_3 .isSelected() mycard .previous( panel_4 ); /此处是用与判断名片的两种状态,如果是查看已有名片,则将可编辑区的属性设置为不可编 辑/如果是添加现有名片,则可以编辑
42、class cardseechangelistener implements ActionListener Overridepublic void actionPerformed(ActionEvent e) / TODOAuto-generated method stub if (e.getSource() = rdbtnNewRadioButton )nametext .setEnabled( true );addressltest.setEnabled(true );address2test.setEnabled(true );emailtest .setEnabled( true );
43、addmessagebutton .setEnabled( true );clearbutton .setEnabled( true );rdbtnNewRadioButton_2 .setSelected( true );singbox .setEnabled( true );dancebox .setEnabled( true );webbox .setEnabled( true );footballbox .setEnabled( true );basketballbox.setEnabled(true );volleyballbox.setEnabled(true );xueshibo
44、x .setEnabled( true );boshibox .setEnabled( true );shuoshibox .setEnabled( true );qitabox .setEnabled( true );if (e.getSource() = rdbtnNewRadioButton_1 )nametext .setEnabled( false );address1test.setEnabled(false );address2test.setEnabled(false );emailtest .setEnabled( false );addmessagebutton .setE
45、nabled( false );clearbutton .setEnabled( false );singbox .setSelected( false );dancebox .setSelected( false );webbox .setSelected( false );footballbox .setSelected( false ); basketballbox .setSelected( false ); volleyballbox .setSelected( false );xueshibox .setSelected( false );shuoshibox .setSelect
46、ed( false );boshibox .setSelected( false ); qitabox .setSelected(false );singbox .setEnabled( false ); dancebox .setEnabled(false );webbox .setEnabled( false ); footballbox .setEnabled( false ); basketballbox.setEnabled(false );volleyballbox.setEnabled(false );xueshibox .setEnabled( false ); boshibo
47、x .setEnabled( false ); shuoshibox .setEnabled( false );qitabox .setEnabled( false );/list中的事件处理器,当点击 list中的选项时,将类信息显示到文本框中/与radiobutton 上,此时处理不可编辑状态class SharedListSelectionHandlerimplements ListSelectionListenerOverridepublic void valueChanged(ListSelectionEvent e) / TODOAuto-generated method stub
48、/将学历及爱好的编辑状态设为不可编辑singbox .setSelected( false );dancebox .setSelected( false );webbox .setSelected( false );footballbox .setSelected( false );basketballbox .setSelected( false );volleyballbox .setSelected( false );xueshibox .setSelected( false );shuoshibox .setSelected( false );boshibox .setSelected
49、( false );qitabox .setSelected( false );/获取list 的index值int k = 0;k = list .getSelectedIndex();/创建PersonInf 空类,用于存储从 arraylist 中获取的类对象 PersonInf px = null ;px = items .get(k);/将此类的信息显示到相应的组件上 nametext .setText(px. yourname ); addressltest.setText(px.addressl );address2test.setText(px.address2 );email
50、test .setText(px. email );if (px. sing != null )singbox .setSelected( true ); if (px. dance != null )dancebox .setSelected( true );if (px. web != null )webbox .setSelected( true );if (px. footballfootballboxif (px. basketballbasketballboxif (px. volleyballvolleyballbox!= null ).setSelected( true );!
51、=null ).setSelected(true );!=null ).setSelected(true );if (px. xueshi != null ) xueshibox .setSelected( true );if (px. shuoshi != null ) shuoshibox .setSelected( true ); if (px. boshi != null ) boshibox .setSelected( true );if (px. qita != null ) qitabox .setSelected( true );(2)import java.io.*;impo
52、rt java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Date;import java.text.SimpleDateFormat;public class Notepad extends JFrameJMenuBar menub=new JMenuBar();JTextArea text =new JTextArea();JMenu files =new JMenu("文件(F)");JMenu edit =new JMenu("编辑(E)");JMenu
53、 formats =new JMenu("格式(O)");JMenu look =new JMenu("查看(V)");JMenu help =new JMenu("帮助(H)");JMenuItem newFile =new JMenuItem("新建(N)");JMenuItem open =new JMenuItem("打开(O)");JMenuItem save =new JMenuItem("保存(S)");JMenuItem saveAs =new JMenuIt
54、em("另存为(A).");JMenuItem page =new JMenuItem("页面设置(U).");JMenuItem print =new JMenuItem("打印(P).");JMenuItem exit =new JMenuItem("退出(X)");JMenuItem undo =new JMenuItem("撤销(U)");JMenuItem cut =new JMenuItem("剪切(T)");JMenuItem copy =new JMenuIt
55、em("复制(C)");JMenuItem paste =new JMenuItem("粘贴(P)");JMenuItem selectAll =new JMenuItem("全选(A)");JMenuItem timeDate =new JMenuItem("时间/日期(D)");JCheckBoxMenuItem lineWrap =new JCheckBoxMenuItem( "自动换行(M)");JMenuItem fonts =new JMenuItem("字体."
56、);JMenuItem state =new JMenuItem("状态栏(S)");JMenuItem lookhelp =new JMenuItem("查看帮助(H)");JMenuItem about =new JMenuItem("关于记事本(A)");JFrame th =this ;String name;String openedPath =null ;boolean opened =false ;boolean reworked =false ;/初始化窗体Notepad(String name)super (name);this . name=name;int x,y;Dimension size=Toolkit. getDefaultToolkit ().getScreenSize();x=(size. width -600)/2;y=(size. height -400)/2;s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部编版语文三年级上册写作教学计划
- 小学三年级数学几百几十加减几百几十单元检测试题大全附答案
- 装修公司的加盟合同范本
- 货船出租合同协议书范本
- 小学二年级数学三位数加减三位数计算单元作业练习题带答案
- 部编人教版小学四年级上册科学期末复习计划
- 业务宣传广告合同范本
- 仓储物流中心质量、安全、成本、进度保障措施
- 电子产品标准化管理措施
- 慢性肾衰竭护理查房
- 煤磨安全试题及答案
- 2025至2030中国低压交流接触器行业发展趋势分析与未来投资战略咨询研究报告
- 渐冻人麻醉处理要点
- 2025年中国邮政集团有限公司广东省分公司人员招聘笔试备考试题及参考答案详解1套
- 2025-2030中国全麦粉市场销售状况与竞争前景分析报告
- 2025年山东省高考生物试卷真题(含答案解析)
- 主语从句超全课件
- 跟骨骨折经皮复位与置钉知识2025
- 《Unit 6 Changing for the seasons》教案-2024-2025学年人教PEP版(2024)小学英语四年级上册
- 天津医院节能管理制度
- 2025年高考数学复习 解题技巧:函数性质(易错点+七大题型)学生版+解析
评论
0/150
提交评论