java 程序设计 实验五.docx
《java 程序设计 实验五.docx》由会员分享,可在线阅读,更多相关《java 程序设计 实验五.docx(33页珍藏版)》请在冰豆网上搜索。
java程序设计实验五
实验报告
课程名称:
JAVA程序设计
学生姓名:
孙文浩班级计算机141学号14416122
学院(系):
信息数理学院指导教师:
吕猛
实验时间:
2016年12月6日
实验名称:
实验五基于Swing的图形用户界面开发实验
实验五基于Swing的图形用户界面开发实验
一实验内容
(1)完成开发界面如图所示,实现如下功能
选中“查看已有名片”按钮,程序处于查看状态,可以在“名片列表”中选择要查看的名片,程序在“名片详实信息”栏显示该名片的详实信息,此状态中名片信息处于不可编辑状态
选中“添加新名片”按钮,程序处于添加状态,所有关于明天信息的项目都处于可编辑状态,设置完成相关信息后,单击“添加”按钮,在“名片列表”中出现新添加名片的名称。
单击“清空”按钮可以清空还没提交的内容
在查看状态和添加状态下,都可以通过点击“爱好”、“学历”单选按钮以显示名片的不同附加信息
(备注:
名片附加信息部分,当点击“爱好”按钮时显示的如图1所示,当点击“学历”按钮时显示如图2所示。
)
图1
图2
(2)记事本设计与实现
如图所示
(1)编程实现如图所示的界面
(2)实现文件、编辑、格式、查看,帮助菜单(3)实现记事本的基本功能
二实验目的
(1)理解组件的分类
(2)掌握容器、布局管理器、普通组件的使用
(3)理解事件处理机制的工作原理
(4)掌握事件的添加和功能代码的编写方法
三实验过程
(1)问题分析
答:
名片的设计除了使用最基本的组件,如JButton,Jlist,JCheckBox,JTextField,JRadioButton,CardLayout以外,最主要的是逻辑事件的编写,在成功布局完见面后,就需要编写事件处理。
首先,由于是名片信息,保存着一个人的基本信息,所以可以用一个类来表示,如PersonInf类,其次,由于是多个人的信息,可以通过ArrayList来存放类;其次就是当点击按钮的时候,正确添加和显示信息,此处用到cardLayout布局,可以减少界面的复杂度,在使用JList的时候,除了加滚动条意外,还需要listModel获取数据等。
(2)代码编写
答:
(1)
publicclassPersonInf{
publicStringyourname;
publicStringaddress1;
publicStringaddress2;
publicStringemail;
publicStringsing=null;
publicStringdance=null;
publicStringweb=null;
publicStringfootball=null;
publicStringbasketball=null;
publicStringvolleyball=null;
publicStringxueshi=null;
publicStringshuoshi=null;
publicStringboshi=null;
publicStringqita=null;
publicPersonInf(Stringyourname,Stringaddress1,Stringaddress2,Stringemail,Stringsing,Stringdance,
Stringweb,Stringfootball,Stringbasketball,Stringvolleyball,
Stringxueshi,Stringshuoshi,Stringboshi,Stringqita){
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.shuoshi=shuoshi;
this.boshi=boshi;
this.qita=qita;
}
}
importjava.awt.BorderLayout;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.EventQueue;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.border.EmptyBorder;
importjavax.swing.JInternalFrame;
importjavax.swing.JRadioButton;
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.ListSelectionListener;
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.JScrollPane;
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;
publicclasscardextendsJFrame{
privateJPanelcontentPane;
publicJTextFieldnametext;
publicJTextFieldaddress1test;
publicJTextFieldaddress2test;
publicJTextFieldemailtest;
publicJButtonaddmessagebutton;
publicJButtonclearbutton;
privateJListlist;
//学历,爱好,添加新名片,查看名片的按钮
privateJRadioButtonrdbtnNewRadioButton_2;
privateJRadioButtonrdbtnNewRadioButton_3;
publicJRadioButtonrdbtnNewRadioButton_1;
publicJRadioButtonrdbtnNewRadioButton;
privateJPanelpanel_4;
//学历和爱好内的多选项
publicJCheckBoxsingbox;
publicJCheckBoxdancebox;
publicJCheckBoxwebbox;
publicJCheckBoxfootballbox;
publicJCheckBoxbasketballbox;
publicJCheckBoxvolleyballbox;
publicJCheckBoxxueshibox;
publicJCheckBoxboshibox;
publicJCheckBoxshuoshibox;
publicJCheckBoxqitabox;
ListSelectionModellistSelectionModel;
CardLayoutmycard;//用于切换爱好和学历卡片
//定义默认的list模型
DefaultListModeldefaultListModel=newDefaultListModel();
/**
*Launchtheapplication.
*/
publicstaticvoidmain(String[]args){
EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
try{
cardframe=newcard();
frame.setVisible(true);
}catch(Exceptione){
e.printStackTrace();
}
}
});
}
/**
*Createtheframe.
*/
//窗体的构造函数,用于设定相关组件并且添加事件,合理安排组建的位置
publiccard(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,464,338);
contentPane=newJPanel();
contentPane.setBorder(newEmptyBorder(5,5,5,5));
setContentPane(contentPane);
contentPane.setLayout(null);
JPanelpanel=newJPanel();
panel.setBounds(0,0,459,316);
contentPane.add(panel);
panel.setLayout(null);
BoxhorizontalBox=Box.createHorizontalBox();
horizontalBox.setBounds(131,203,121,-41);
panel.add(horizontalBox);
BoxhorizontalBox_1=Box.createHorizontalBox();
horizontalBox_1.setBounds(0,0,1,1);
panel.add(horizontalBox_1);
JPanelpanel_1=newJPanel();
panel_1.setBounds(16,27,166,66);
panel_1.setBorder(BorderFactory.createLoweredSoftBevelBorder());
panel.add(panel_1);
rdbtnNewRadioButton_1=newJRadioButton("查看已有名片");
rdbtnNewRadioButton_1.setSelected(true);
panel_1.add(rdbtnNewRadioButton_1);
rdbtnNewRadioButton_1.addActionListener(newcardseechangelistener());
rdbtnNewRadioButton=newJRadioButton("添加新名片");
panel_1.add(rdbtnNewRadioButton);
rdbtnNewRadioButton.addActionListener(newcardseechangelistener());
ButtonGroupgroup2=newButtonGroup();
group2.add(rdbtnNewRadioButton_1);
group2.add(rdbtnNewRadioButton);
JPanelpanel_2=newJPanel();
panel_2.setBorder(newSoftBevelBorder(BevelBorder.LOWERED,null,null,null,null));
panel_2.setBounds(194,27,248,182);
panel.add(panel_2);
panel_2.setLayout(null);
JLabellblNewLabel=newJLabel("姓名");
lblNewLabel.setBounds(34,13,61,16);
panel_2.add(lblNewLabel);
nametext=newJTextField();
nametext.setBounds(100,8,130,26);
panel_2.add(nametext);
nametext.setColumns(10);
address1test=newJTextField();
address1test.setColumns(10);
address1test.setBounds(100,36,130,26);
panel_2.add(address1test);
JLabellabel=newJLabel("地址");
label.setBounds(34,41,61,16);
panel_2.add(label);
address2test=newJTextField();
address2test.setColumns(10);
address2test.setBounds(100,64,130,26);
panel_2.add(address2test);
JLabellabel_1=newJLabel("联系地址");
label_1.setBounds(28,69,61,16);
panel_2.add(label_1);
JLabellabel_2=newJLabel("电子邮件");
label_2.setBounds(28,97,61,16);
panel_2.add(label_2);
emailtest=newJTextField();
emailtest.setColumns(10);
emailtest.setBounds(100,92,130,26);
panel_2.add(emailtest);
rdbtnNewRadioButton_2=newJRadioButton("爱好");
rdbtnNewRadioButton_2.setBounds(18,125,61,16);
panel_2.add(rdbtnNewRadioButton_2);
rdbtnNewRadioButton_2.addActionListener(newcardchangelistener());
rdbtnNewRadioButton_3=newJRadioButton("学历");
rdbtnNewRadioButton_3.setBounds(18,153,61,16);
panel_2.add(rdbtnNewRadioButton_3);
rdbtnNewRadioButton_3.addActionListener(newcardchangelistener());
ButtonGroupgroup1=newButtonGroup();
group1.add(rdbtnNewRadioButton_2);
group1.add(rdbtnNewRadioButton_3);
addmessagebutton=newJButton("添加");
addmessagebutton.addActionListener(newaddmessagebuttonlistener());
addmessagebutton.setBounds(123,121,85,27);
panel_2.add(addmessagebutton);
//清空按钮,点击时触发清空的事件
clearbutton=newJButton("清空");
clearbutton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
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.setSelected(false);
boshibox.setSelected(false);
qitabox.setSelected(false);
nametext.setText("");
address1test.setText("");
address2test.setText("");
emailtest.setText("");
}
}
});
clearbutton.setBounds(123,149,85,27);
panel_2.add(clearbutton);
clearbutton.setEnabled(false);
addmessagebutton.setEnabled(false);
JPanelpanel_3=newJPanel();
panel_3.setBorder(newSoftBevelBorder(BevelBorder.LOWERED,null,null,null,null));
panel_3.setBounds(16,123,166,187);
panel.add(panel_3);
panel_3.setLayout(null);
list=newJList();
list.setModel(defaultListModel);
list.setBounds(19,82,85,87);
listSelectionModel=list.getSelectionModel();
listSelectionModel.addListSelectionListener(
newSharedListSelectionHandler());
JScrollPanescrollPane=newJScrollPane(list);
scrollPane.setBounds(6,6,154,175);
panel_3.add(scrollPane);
panel_4=newJPanel();
panel_4.setBounds(194,232,248,78);
panel.add(panel_4);
mycard=newCardLayout();
panel_4.setLayout(mycard);
JPanelpanel_5=newJPanel();
panel_5.setBorder(newSoftBevelBorder(BevelBorder.LOWERED,null,null,null,null));
panel_4.add(panel_5);
panel_5.setLayout(null);
singbox=newJCheckBox("唱歌");
singbox.setBounds(6,16,66,23);
panel_5.add(singbox);
dancebox=newJCheckBox("跳舞");
dancebox.setBounds(82,16,66,23);
panel_5.add(dancebox);
webbox=newJCheckBox("上网");
webbox.setBoun