C
H
A
N
G
Z
HOU U N
I
Y
T
I
S
V ER
实 验 报 告
实验课程名称:
Java 程序设计
本次实验是第 5 次,名称为 基于 Swing 的图形用户界面开发实验
学 生 姓 名: 成夏兵 班 级 物联网 161 学 号 16488114
学 院(系): 信息数理学院 指 导 教 师:
吕猛
成
绩:
一 实验内容
(1)完成开发界面如图所示,实现如下功能
选中“查看已有名片”按钮,程序处于查看状态,可以在“名片列表”中选择要查
看的名片,程序在“名片详实信息”栏显示该名片的详实信息,此状态中名片信息
处于不可编辑状态
选中“添加新名片”按钮,程序处于添加状态,所有关于明天信息的项目都处于
可编辑状态,设置完成相关信息后,单击“添加”按钮,在“名片列表”中出现新添
加名片的名称。单击“清空”按钮可以清空还没提交的内容
在查看状态和添加状态下,都可以通过点击“爱好”、“学历”单选按钮以显示名
片的不同附加信息
(备注:名片附加信息部分,当点击“爱好”按钮时显示的如图 1 所示,当点击“学
历”按钮时显示如图 2 所示。)
图 1
图 2
(2)记事本设计与实现
如图所示(1)编程实现如图所示的界面(2)实现文件、编辑、格式、查看,帮
助菜单(3)实现记事本的基本功能
二 实验目的
(1) 理解组件的分类
(2) 掌握容器、布局管理器、普通组件的使用
(3) 理解事件处理机制的工作原理
(4) 掌握事件的添加和功能代码的编写方法
三 实验过程
(1) 问题分析
①本题是卡片信息管理,主要通过使用 Swing 中一些控件来实现,有了 GUI 控件,就
可以在同一个容器中加入很多控件,为了使图形用户界面具有良好的平台无关性,我们
可以使用布局管理器来管理组件在容器中的布局。典型的布局管理器包括:FlowLayout、
BorderLayout、GridLayout、CardLayout 和 GridbagLayout。
②记事本的设计需要我们在完全了解我们电脑上的记事本一般的格式与功能,根据多功
能也需要多个容器,灵活运用不同的控件。我们可以对这些控件进行分组,一组是参数
设置,另一组是按钮,在具体实现上,就是创建两个子面板,然后把参数设置相关的控
件添加到第一个子面板中,把按钮控件添加到第二个子面板中。
(2) 代码编写
①
package cg;
public class PersonInf {
public String yourname;
public String address1;
public String address2;
public String email;
public String sing = null;
public String dance = null;
public String web = null;
public String football = null;
public String basketball = null;
public String volleyball = null;
public String xueshi = null;
public String shuoshi = null;
public String boshi = null;
public String qita = null;
public PersonInf(String yourname, String address1, String address2, String email, String
sing, String dance,
String web, String football, String basketball, String volleyball,
String xueshi,String shuoshi,String boshi, String 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.shuoshi = 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;
import javax.swing.JInternalFrame;
import javax.swing.JRadioButton;
import javax.swing.JLayeredPane;
import javax.swing.JSplitPane;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.DefaultListModel;
import java.awt.Component;
import javax.swing.border.SoftBevelBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.border.BevelBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.border.EtchedBorder;
import javax.swing.JFormattedTextField;
import javax.swing.JSpinner;
import javax.swing.JTable;
import javax.swing.JList;
import javax.swing.JScrollPane;
import java.awt.Color;
import javax.swing.JTextArea;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.awt.event.ActionEvent;
import java.awt.CardLayout;
public class card extends JFrame {
JTextField nametext;
JTextField address1test;
JTextField address2test;
JTextField emailtest;
JButton addmessagebutton;
private JPanel contentPane;
public
public
public
public
public
public JButton clearbutton;
private JList list;
//学历,爱好,添加新名片,查看名片的按钮
private JRadioButton rdbtnNewRadioButton_2;
private JRadioButton rdbtnNewRadioButton_3;
public JRadioButton rdbtnNewRadioButton_1;
public JRadioButton rdbtnNewRadioButton;
private JPanel panel_4;
//学历和爱好内的多选项
public JCheckBox singbox;
public JCheckBox dancebox;
public JCheckBox webbox;
public JCheckBox footballbox;
public JCheckBox basketballbox;
public JCheckBox volleyballbox;
public JCheckBox xueshibox;
public JCheckBox boshibox;
public JCheckBox shuoshibox;
public JCheckBox qitabox;
ListSelectionModel listSelectionModel;
CardLayout mycard; //用于切换爱好和学历卡片
//定义默认的 list 模型