Java语言程序设计网上.docx
- 文档编号:26598306
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:29
- 大小:247.99KB
Java语言程序设计网上.docx
《Java语言程序设计网上.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计网上.docx(29页珍藏版)》请在冰豆网上搜索。
Java语言程序设计网上
Java语言程序设计
实验报告
实验三:
图形用户界面设计
专业信息管理与信息系统
班级
姓名
学号
指导教师
完成日期2014.12.09
2014年秋季学期
实验三:
图形用户界面设计
3.1实验性质
验证性实验(4学时)
3.2实验目的
Swing是Java基础类库(JFC)的组成部分,它实现一组新的GUI组件,具有可插接的外观感觉效果。
Swing是以100%纯Java实现的,且以JDK1.1LightweightUI框架为基础。
可插接的外观感觉效果使您只需要设计一个GUI组件集,就可以自动得到与任意OS平台相吻合的外观感觉效果。
Swing 组件包含两个已有AWT组件集的100%纯Java版本,外加一个高级组件的全集。
本实验的目的在于掌握Java的GUI设计技术,熟悉AWT和Swing(重点)的应用技巧。
3.3实验内容
1)回顾AWT的应用方法
2)体会格网布局方案及其应用
3)观察可视化组件的事件监听机制和处理方法
4)查看基本的Swing用法
5)体验JTable组件的运用机制
6)编写一个带有条目的列表框
7)创建一个菜单
8)制作一个图书证信息输入窗体和一个借用物品窗体
9)编写基本的事件处理,交换窗体背景色彩
10)利用合适的布局和Swing控件完成一个简单的数据计算任务
11)回答思考问题
3.4实验准备
将以下代码输入NetBeans中,若代码存在错误请进行修改,查看输出成果,并对各行语句进行解释,将解释内容和运行结果写入实验报告。
(1)AWT简单示例
importjava.awt.*;
publicclassAwtDemoextendsFrame{
Labellblname,lblage,lbladdr;//创建lblname,lblage,lbladdr对象
TextFieldtxtname,txtage;//创建txtname对象
TextAreatxtaddr;
AwtDemo(Strings)
{
super(s);
setLayout(newFlowLayout());
lblname=newLabel("姓名:
");//设置lblname属性为"姓名:
"
lblage=newLabel("年龄:
");//设置lblagee属性为"年龄:
"
lbladdr=newLabel("地址");//设置lbladdr属性为"地址:
"
txtname=newTextField(15);//设置txtname属性
txtage=newTextField(15);//设置txtage属性
txtaddr=newTextArea("北京\n海淀区\n982号",10,50,1);//初始化txtaddr
add(lblname);//添加lblname组件
add(txtname);//添加txtname组件
add(lblage);//添加lblage组件
add(txtage);//添加txtage组件
add(lbladdr);//添加lblname组件
add(txtaddr);//添加txtaddr组件
}
publicstaticvoidmain(String[]arg)
{
guidemoobj=newguidemo("正在测试组件");//创建obj对象
obj.setSize(400,300);//调用setSize()方法
obj.show();//显示txtadd相关内容
}
}
*加粗行改为:
AwtDemoobj=newAwtDemo("正在测试组件");
运行结果界面为:
(2)网格布局示例
importjava.awt.*;
importjavax.swing.*;
publicclassGridLayoutDemo
{
publicstaticvoidmain(Stringargs[])
{
JFrameframe=newJFrame("GridLayout布局");//创建JFrameframe对象,设置属性
Containerc=frame.getContentPane();//获取容器
GridLayoutg=newGridLayout(3,2,5,5);//设置面板属性
c.setLayout(g);
c.add(newJButton("1"));//添加JButton组件,且其text属性设为"1"
c.add(newJButton("2"));//添加JButton组件,且其text属性设为"2
c.add(newJButton("3"));//添加JButton组件,且其text属性设为"3"
c.add(newJButton("4"));//添加JButton组件,且其text属性设为"4"
c.add(newJButton("5"));//添加JButton组件,且其text属性设为"5"
c.add(newJButton("6"));//添加JButton组件,且其text属性设为"6"
frame.setSize(200,250);//设置高度与宽度
frame.setVisible(true);//窗体显示
}
}
运行结果界面为:
(3)简单事件示例
importjava.awt.*;
importjava.awt.event.*;
publicclasseventdemoextendsFrameimplementsActionListener{
TextFieldtxtf;//声明TextField型变量txtf
TextAreatxta;//声明TextArea型变量txta
eventdemo(Stringtitle)
{
super(title);//设置窗体标题
setLayout(newFlowLayout());//设置面板布局
txtf=newTextField(20);//设置文本宽度
txta=newTextArea(6,20);//设置文本宽度与高度
add(txtf);//添加组件txtf
add(txta);//添加组件txta
txtf.addActionListener(this);
addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEvente)
{
System.exit(0);//给窗口注册一个事件监听器,当你点了窗口右上方的叉号时此方法被调用
}
});
setSize(200,200);//设置宽度与高度
setVisible(true);//窗体显示
}
publicvoidactionPerformed(ActionEvente)
{
txta.setText(txtf.getText());
}
publicstaticvoidmain(String[]arg)
{
eventdemoobj=neweventdemo("事件示例");
}
}
运行结果界面为:
(4)Swing示例
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
publicclassJListDemoimplementsListSelectionListener{
JListlist=null;
JLabellabel=null;
String[]s={"美国","中国","英国","法国","意大利","澳洲","韩国"};
publicJListDemo(){
JFramef=newJFrame("JList");//创建JFramef对象,并设置title
ContainercontentPane=f.getContentPane();
contentPane.setLayout(newBorderLayout());
label=newJLabel();//对象初始化
list=newJList(s);//list初始化
list.setVisibleRowCount(5);//设定列表方框的可见栏数
list.setBorder(BorderFactory
.createTitledBorder("您最喜欢到哪个国家玩呢?
"));
list.addListSelectionListener(this);
contentPane.add(label,BorderLayout.NORTH);
//给列表方框添加滚动栏
contentPane.add(newJScrollPane(list),BorderLayout.CENTER);
f.pack();//依据f组件的大小设置容器的大小
f.show();//使窗体f显示
f.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
}
publicvoidvalueChanged(ListSelectionEvente){
inttmp=0;
Stringstmp="您目前选取:
";
//利用JList类所提供的getSelectedIndices()方法可得到用户所选取的所有项目
int[]index=list.getSelectedIndices();
//index值,这些index值由一个intarray返回.
for(inti=0;i { tmp=index[i]; stmp=stmp+s[tmp]+""; } label.setText(stmp);//把label组建的text属性设为stmp } publicstaticvoidmain(Stringargs[]){ newJListDemo(); } } 运行结果界面为: (5)JTable高级控件示例 importjavax.swing.table.AbstractTableModel; importjavax.swing.event.*; importjavax.swing.*; importjava.awt.*; importjava.awt.event.*; publicclassJTableDemoimplementsTableModelListener { JTabletable=null;//初始化JTabletable MyTablemt=null;//初始化MyTablemt JLabellabel=null;//显示修改字段位置 publicJTableDemo(){ JFramef=newJFrame();//创建JFramef对象 mt=newMyTable();//对mt对象初始化 //增加JTable事件监听器 mt.addTableModelListener(this); table=newJTable(mt); //创建组合框 JComboBoxc=newJComboBox(); //给组合框增加条目 c.addItem("广州"); c.addItem("上海"); c.addItem("北京"); //利用组合框作为table的第一列值的选项 table.getColumnModel(). getColumn (1).setCellEditor(newDefaultCellEditor(c)); //设定table的显示的大小 table.setPreferredScrollableViewportSize(newDimension(550,40)); //给table增加滚动条 JScrollPanes=newJScrollPane(table); label=newJLabel("修改字段位置: ");//初始化label f.getContentPane().add(s,BorderLayout.CENTER); f.getContentPane().add(label,BorderLayout.SOUTH); f.setTitle("TableEventHandle"); f.pack(); f.setVisible(true); f.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); } }); } publicvoidtableChanged(TableModelEvente) { introw=e.getFirstRow();//得到被修改的行(第一个)的行数 intcolumn=e.getColumn();//得到被修改的列数 label.setText("修改字段位置: "+(row+1)+"行"+(column+1)+"列"); //得到第row行第6列的值,即看看是否作弊 booleancheat=((Boolean)(mt.getValueAt(row,6))).booleanValue(); intgrade1=((Integer)(mt.getValueAt(row,2))).intValue(); intgrade2=((Integer)(mt.getValueAt(row,3))).intValue(); inttotal=grade1+grade2; if(cheat) {//如果作弊,则总分重设 if(total>120) mt.mySetValueAt(newInteger(119),row,4); else mt.mySetValueAt(newInteger(total),row,4); mt.mySetValueAt(newBoolean(false),row,5); } else { if(total>120)//判断该学生是否及格 mt.mySetValueAt(newBoolean(true),row,5); else mt.mySetValueAt(newBoolean(false),row,5); mt.mySetValueAt(newInteger(total),row,4); } table.repaint(); } publicstaticvoidmain(Stringargs[]){ newJTableDemo(); } } classMyTableextendsAbstractTableModel{ Object[][]p={ {"小明","广州",newInteger(66),newInteger(32),newInteger(98), newBoolean(false),newBoolean(false)}, {"小军","上海",newInteger(85),newInteger(69),newInteger(154), newBoolean(true),newBoolean(false)}, {"小东","北京",newInteger(88),newInteger(70),newInteger(158), newBoolean(false),newBoolean(false)}}; String[]n={"姓名","居住地","语文","数学","总分","及格","作弊"}; //返回总列数 publicintgetColumnCount(){ returnn.length; } //返回总行数 publicintgetRowCount(){ returnp.length; } //返回列名 publicStringgetColumnName(intcol){ returnn[col]; } //返回table的一个字段,若没有设置列标题则返回默认值,依次为A,B,C,...Z,AA,AB,..; //若无此column,则返回一个空的String publicObjectgetValueAt(introw,intcol){ returnp[row][col]; } //返回字段数据类型的类名称 publicClassgetColumnClass(intc){ returngetValueAt(0,c).getClass(); } //返回指定字段是否可修改 publicbooleanisCellEditable(introwIndex,intcolumnIndex){ returntrue; } //给指定字段赋值,并通知table已修改 publicvoidsetValueAt(Objectvalue,introw,intcol){ p[row][col]=value; fireTableCellUpdated(row,col); } //自定义修改某指定字段 publicvoidmySetValueAt(Objectvalue,introw,intcol){ p[row][col]=value; } } 显示界面为: 3.5实验步骤 (1)利用List类编写如下界面 在JFrame窗体“设计”面板中: 1.添加“标签”,编辑文本“Whatareyoulike: ”。 2.添加“列表”,属性中“Model”中编辑文本“AppleBananaGrapeOrangePeachLemon”。 3.“列表”属性中“selectionBackground”更改为“白色”。 4.“列表”属性中“selectionForeground”更改为“黑色”。 5.“列表”属性中“Background”更改为“棕色”。 6.运行源程序。 设计界面如下: (2)完成菜单界面 菜单结构: M5=newJMenu("图书入库"); menuItem14=newJMenuItem("图书入库"); M1=newJMenu("图书证管理"); menuItem1=newJMenuItem("读者注册"); M2=newJMenu("图书流通管理"); menuItem6=newJMenuItem("读者借书"); menuItem7=newJMenuItem("还书"); menuItem15=newJMenuItem("续借"); M3=newJMenu("统计查询"); menuItem9=newJMenuItem("图书查询"); menuItem11=newJMenuItem("借阅统计"); menuItem12=newJMenuItem("借阅查询"); menuItem16=newJMenuItem("新书通报"); menuItem17=newJMenuItem("图书催还"); M4=newJMenu("帮助"); 在JFrame窗体“设计”面板中: 1.添加“内部框架”,在“属性”中编辑“title”为“主窗体”。 2.添加“菜单栏”,添加菜单并编辑文本“图书入库图书证管理图书流通管理统计查询帮助”。 3.在每个菜单选项下附加“菜单项”并编辑文本。 例如: 在“图书入库”下附加“菜单项”,编辑文本为“图书入库”。 4.运行源程序。 设计界面如下: 相关主要程序如下: jInternalFrame1.setTitle("主窗体"); jInternalFrame1.setVisible(true); jMenu1.setText("图书入库"); jMenuItem1.setText("图书入库"); jMenu1.add(jMenuItem1); jMenuBar1.add(jMenu1); jMenu2.setText("图书证管理"); jMenuItem2.setText("读者注册"); jMenu2.add(jMenuItem2); jMenuBar1.add(jMenu2); jMenu3.setText("图书流通管理"); jMenuItem3.setText("读者借书"); jMenu3.add(jMenuItem3); jMenuItem4.setText("还书"); jMenu3.add(jMenuItem4); jMenuItem5.setText("续借"); jMenu3.add(jMenuItem5); jMenuBar1.add(jMenu3); jMenu4.setText("统计查询"); jMenuItem6.setText("图书查询"); jMenu4.add(jMenuItem6); jMenuItem7.setText("借阅统计"); jMenu4.add(jMenuItem7); jMenuItem8.setText("借阅查询"); jMenu4.add(jMenuItem8); jMenuItem9.setText("新书通报"); jMenu4.add(jMenuItem9); jMenuItem10.setText("图书催还"); jMenu4.add(jMenuItem10); jMenuBar1.add(jMenu4); jMenu5.setText("帮助"); jMenuBar1.add(jMenu5); (3)完成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 语言程序设计 网上