Java SE实验报告4.docx
- 文档编号:12650315
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:15
- 大小:664.82KB
Java SE实验报告4.docx
《Java SE实验报告4.docx》由会员分享,可在线阅读,更多相关《Java SE实验报告4.docx(15页珍藏版)》请在冰豆网上搜索。
JavaSE实验报告4
实验四:
Swing高级控件使用
班级:
姓名:
学号:
实验目的:
通过工具栏、菜单等高级控件的使用,掌握Java中GUI程序设计的方法。
实验内容:
工具栏的使用;菜单的使用;通用对话框的使用;JTree的使用。
实验步骤:
1.实验步骤
01.学习工具栏的使用
02.学习菜单的使用
03.学习对话框的使用
04.学习JTree的使用
2.实验源代码
01.工具栏实验源代码
importjavax.swing.*;
importjava.awt.*;
publicclassToolBarDemoextendsJFrame{
privateJPanelp;
//声明工具栏
privateJToolBartoolBar;
privateJButtonbtnCopy,btnPost,btnCut;
publicToolBarDemo(){
super("工具栏");
p=newJPanel();
//创建工具栏
toolBar=newJToolBar();
//将工具栏对象添加到窗体的上方(北面)
this.add(toolBar,BorderLayout.NORTH);
//创建按钮对象,按钮上有图片
btnCopy=newJButton(newImageIcon("E:
\\1.gif"));
btnPost=newJButton(newImageIcon("E:
\\2.gif"));
btnCut=newJButton(newImageIcon("E:
\\3.gif"));
//设置按钮的工具提示文本
btnCopy.setToolTipText("复制");
btnPost.setToolTipText("粘贴");
btnCut.setToolTipText("剪切");
//将按钮添加到工具栏中
toolBar.add(btnCopy);
toolBar.add(btnPost);
toolBar.add(btnCut);
this.add(p);
this.setSize(200,150);
this.setLocation(100,100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
publicstaticvoidmain(String[]args){
ToolBarDemof=newToolBarDemo();
f.setVisible(true);
}
}
实验代码分析
实验定义一个JtoolBar变量,3个Jbutton变量,对三个JButton变量分别赋予剪切、复制、粘贴。
其中JButton通过setToolTipText()方法添加了按钮提示内容。
实验运行结果
02.菜单实验源代码
importjavax.swing.*;
publicclassMenuDemoextendsJFrame{
privateJPanelp;
//声明菜单栏
privateJMenuBarmenuBar;
//声明菜单
privateJMenumenuFile,menuEdit,menuHelp,menuNew;
//声明菜单选项
privateJMenuItemmiSave,miExit,miCopy,miPost,miAbout,miC,miJava,
miEmpty;
publicMenuDemo(){
super("菜单");
p=newJPanel();
//创建菜单栏对象
menuBar=newJMenuBar();
//将菜单栏设置到窗体中
this.setJMenuBar(menuBar);
//创建菜单
menuFile=newJMenu("文件");
menuEdit=newJMenu("编辑");
menuHelp=newJMenu("帮助");
menuNew=newJMenu("新建");
//将菜单添加到菜单栏
menuBar.add(menuFile);
menuBar.add(menuEdit);
menuBar.add(menuHelp);
//将新建菜单添加到文件菜单中
menuFile.add(menuNew);
//在菜单中添加分隔线
menuFile.addSeparator();
//创建菜单选项
miSave=newJMenuItem("保存");
miExit=newJMenuItem("推出");
miCopy=newJMenuItem("复制");
miPost=newJMenuItem("粘贴");
miAbout=newJMenuItem("关于");
miC=newJMenuItem("C++");
miJava=newJMenuItem("JAVA");
miEmpty=newJMenuItem("空白文档");
//将菜单项添加到菜单中
menuFile.add(miSave);
menuFile.add(miExit);
menuEdit.add(miCopy);
menuEdit.add(miPost);
menuHelp.add(miAbout);
menuNew.add(miC);
menuNew.add(miJava);
menuNew.add(miEmpty);
this.add(p);
this.setSize(300,250);
this.setLocation(100,100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
publicstaticvoidmain(String[]args){
MenuDemof=newMenuDemo();
f.setVisible(true);
}
}
实验代码分析
实验中分别声明了一个JmenuBar、若干个Jmenu、若干个JmenuItem,把相应的菜单项(JmenuItem)添加到对应的菜单(Jmenu)中,再把菜单添加到菜单栏(JmenuBar)中,实现原理相对简单,易于实现。
菜单栏对象可以通过JFrame类的setJMenuBar()方法将其添加到框架的顶部。
语句如下:
Frame.setJMenuBar(menuBar);
实验运行结果
03.对话框实验源代码
importjavax.swing.*;
importjava.awt.event.*;
importjava.awt.*;
publicclassDialogDemoextendsJFrameimplementsActionListener{
privateJMenuBarmenuBar;
privateJMenumenuManage;
privateJMenuItemmiAddUser;
//声明一个滚动面板
privateJScrollPanesp;
privateJTextAreatxtContent;
//声明对话框
privateUserDialoguserDialog;
publicDialogDemo(){
super("对话框");
menuBar=newJMenuBar();
this.setJMenuBar(menuBar);
menuManage=newJMenu("用户管理");
menuBar.add(menuManage);
miAddUser=newJMenuItem("添加新用户");
menuManage.add(miAddUser);
//注册监听
miAddUser.addActionListener(this);
txtContent=newJTextArea(20,30);
//实例化一个滚动面板,置入文本域
sp=newJScrollPane(txtContent);
//将滚动面板添加到窗体中
this.add(sp);
this.setSize(300,200);
this.setLocation(100,100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//重写事件处理方法
publicvoidactionPerformed(ActionEvente){
//判断是否实例化对话框
if(userDialog==null){
userDialog=newUserDialog(this);
}
//显示对话框
userDialog.setVisible(true);
}
publicstaticvoidmain(String[]args){
DialogDemof=newDialogDemo();
f.setVisible(true);
}
//创建一个对话框类
classUserDialogextendsJDialogimplementsActionListener{
JPanelp;
JLabellblName,lblPwd,lblType;
JTextFieldtxtName;
JPasswordFieldtxtPwd;
JComboBoxcmbType;
JButtonbtnOK,btnCancle;
publicUserDialog(JFramef){
super(f,"添加新用户",true);
p=newJPanel(newGridLayout(4,2));
lblName=newJLabel("用户名");
lblPwd=newJLabel("密码");
lblType=newJLabel("类型");
txtName=newJTextField(10);
txtPwd=newJPasswordField(10);
Stringstr[]={"普通用户","VIP用户","管理员"};
cmbType=newJComboBox(str);
btnOK=newJButton("确定");
btnCancle=newJButton("取消");
//注册监听
btnOK.addActionListener(this);
btnCancle.addActionListener(this);
p.add(lblName);
p.add(txtName);
p.add(lblPwd);
p.add(txtPwd);
p.add(lblType);
p.add(cmbType);
p.add(btnOK);
p.add(btnCancle);
this.add(p);
//设置合适的大小
this.pack();
}
//重写事件处理方法
publicvoidactionPerformed(ActionEvente){
//点击确定按钮时
if(e.getSource()==btnOK){
//获取用户名文本栏的信息
StringstrName=txtName.getText();
//获取密码栏中的信息
StringstrPwd=newString(txtPwd.getPassword());
//验证
if(strName.equals("")){
JOptionPane.showMessageDialog(btnOK,"用户名不能为空!
");
return;
}
if(strPwd.equals("")){
JOptionPane.showMessageDialog(btnOK,"密码不能为空!
");
return;
}
if(strPwd.length()<6||strPwd.length()>10){
JOptionPane.showMessageDialog(btnOK,"密码长度应在6~10之间!
");
return;
}
//以追加的方式在文本域中显现信息
txtContent.append("用户名:
"+strName+"\n");
txtContent.append("密码:
"+strPwd+"\n");
txtContent.append("类型:
"+cmbType.getSelectedItem().toString()
+"\n\n");
//隐藏
this.setVisible(false);
}
//点击取消按钮时
if(e.getSource()==btnCancle){
//清空文本栏
txtName.setText("");
txtPwd.setText("");
//隐藏
this.setVisible(false);
}
}
}
}
实验代码分析
对话框的实现部分相对有意思,因为其间夹杂了动态弹出框等元素。
程序中编写的UserDialog类继承了JDialog类实现了ActionListener接口。
程序通过UserDialog(JFramef)构造函数实现在JFrame操作中弹出对应的Jdialog,actionPerformed()方法实现对动作的监听,通过getSource()方法获取对象,从而进行比较。
实验运行结果
04.JTree实验源代码
importjava.awt.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjavax.swing.tree.*;
publicclassTreeDemoextendsJFrameimplementsTreeSelectionListener{
privateDefaultMutableTreeNoderoot;
privateDefaultTreeModelmodel;
privateJTreetree;
privateJTextAreatextArea;
privateJPanelp;
publicTreeDemo(){
super("TreeBrowserTest");
//实例化树的根节点
root=makeSampleTree();
//实例化的树模型
model=newDefaultTreeModel(root);
//实例化一棵树
tree=newJTree(model);
//注册树的监听对象,监听选择不同的树节点
tree.addTreeSelectionListener(this);
//设置树的选择模式是单一节点的选择模式(一次只能选中一个节点)
tree.getSelectionModel().setSelectionMode(
TreeSelectionModel.SINGLE_TREE_SELECTION);
//实例化一个面板对象,布局是1行2列
p=newJPanel(newGridLayout(1,2));
//在面板的左侧放置树
p.add(newJScrollPane(tree));
textArea=newJTextArea();
//面板右侧放置文本域
p.add(newJScrollPane(textArea));
this.add(p);
this.setSize(400,300);
this.setLocation(100,100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//创建一棵树对象的方法
publicDefaultMutableTreeNodemakeSampleTree(){
//实例化树节点,并将节点添加到相应节点中
DefaultMutableTreeNoderoot=newDefaultMutableTreeNode("世界");
DefaultMutableTreeNodecountry=newDefaultMutableTreeNode("中国");
root.add(country);
DefaultMutableTreeNodestate=newDefaultMutableTreeNode("山东");
country.add(state);
DefaultMutableTreeNodecity=newDefaultMutableTreeNode("青岛");
state.add(city);
city=newDefaultMutableTreeNode("济南");
state.add(city);
state=newDefaultMutableTreeNode("江苏");
country.add(state);
city=newDefaultMutableTreeNode("南京");
state.add(city);
returnroot;
}
//重写树的选择事件处理方法
publicvoidvalueChanged(TreeSelectionEventevent){
//获取选中节点的路径
TreePathpath=tree.getSelectionPath();
if(path==null)
return;
//获取选中的节点对象
DefaultMutableTreeNodeselectedNode=(DefaultMutableTreeNode)path
.getLastPathComponent();
//获取选中节点的内容,并显示到文本域中
textArea.setText(selectedNode.getUserObject().toString());
}
publicstaticvoidmain(String[]args){
TreeDemof=newTreeDemo();
f.setVisible(true);
}
}
实验代码分析
程序中继承JFrame,实现了TreeSelectionListener接口。
TreeModel树的模型接口可以出发相关的树事件,处理树可能产生的一些变动。
TreeNode是树节点,它是一个接口,里面定义了有关节点的方法。
DefaultMutableTreeNode是一个实现了Tree和MutableTreeNode接口的类。
实验定义了DefaultMutableTreeNoderoot根变量,经过root=makeSampleTree();返回初始化的树形结构,然后通过model=newDefaultTreeModel(root);把生成的树形结构实例化树形模型,通过tree=newJTree(model);把实例化的树形模型实例化为树。
通过tree.addTreeSelectionListener(this);监听树节点的动作,通过tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);设置树的选择模式。
实验运行结果
实验体会:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java SE实验报告4 SE 实验 报告