第七次实验:GUI标准组件及事件处理
一、实验目的
了解图形用户界面基本组件:框架、面板、按钮、标签、菜单、列表等的使用方法;了解如何使用布局管理器对组件进行管理;理解和掌握Java 的事件处理机制。
二、实验要求
1. 了解Java图像用户界面的开发,掌握基本组件的使用。
2. 掌握编写独立运行的窗口界面的方法,了解菜单和对话框的使用方法。
3. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。
三、实验内容
(一)在面板中添加多个组件,并进行合理的布局
?程序功能:在一个框架(Frame)容器中添加一个面板(Panel)容器,并分别在框架和面板容器中添加组件并使用不同的布局管理方式。
?请编写KY7_1.java 程序文件,源代码如下:
import java.awt.*;
import java.awt.Color;
public class KY7_1
{
public static void main(String args[])
{
Frame f = new Frame(); //创建一个框架f
Panel p = new Panel(); //创建一个面板p
f.add(p); //把面板p添加到框架f中
p.setBackground(Color.blue); //设置面板p的背景颜色为蓝色
p.setLayout(new FlowLayout()); //设置面板p的布局为流式布局
Label l = new Label();
p.add(l); //在面板p中添加一个标签l
Button button1 = new Button();
Button button2 = new Button();
Button button3 = new Button();
Button button4 = new Button();
Button button5 = new Button();
Button button6 = new Button();
p.add(button1);
p.add(button2); p.add(button3); p.add(button4); p.add(button5); p.add(button6); //在面板p 中添加六个按钮 Choice c=new Choice(); // 创建一个下拉列表c , c.addItem("北京"); // 下拉列表c 中有三个选项:北京、上海和天津 c.addItem("上海"); c.addItem("天津"); p.add(c); //把列表c 添加到面板p 中
f.setBounds(400,400,400,400); f.setVisible(true);
f.validate(); //设置框架f 的大小和可见性
}
}
(二)为窗口添加菜单,并处理由菜单项所引发的事件
? 程序功能:在窗口中添加菜单条,在菜单条中添加菜单,并在菜单中添加菜单项和
子菜单。通过选择菜单项可以引发不同的事件,从而执行不同操作,例如点击“打开”菜单项可以打开一个“打开文件对话框”。
? 编写KY7_2.java 程序文件,代码如下:
import java.awt.*;
import java.awt.event.*;
public class KY7_2 extends Frame implements ActionListener
{static Frame f;
m1
m2 m
static FileDialog fd1;
static FileDialog fd2;
public static void main(String args[])
{KY7_2 k = new KY7_2();
f = new Frame();
MenuBar mb = new MenuBar();
Menu m1 = new Menu("文件");
Menu m2 = new Menu("帮助");
mb.add(m1);
mb.add(m2);
MenuItem m11 = new MenuItem("打开");
MenuItem m12 = new MenuItem("关闭");
MenuItem m13 = new MenuItem("退出");
m1.add(m11);
m1.add(m12);
m1.add(m13);
MenuItem m21 = new MenuItem("目录");
MenuItem m22 = new MenuItem("索引");
MenuItem m23 = new MenuItem("关于");
m2.add(m21);
m2.add(m22);
m2.add(m23);
Menu m3 = new Menu("编辑");
MenuItem m31 = new MenuItem("复制");
MenuItem m32 = new MenuItem("剪切");
MenuItem m33 = new MenuItem("粘贴");
m3.add(m31);
m3.add(m32);
m3.add(m33);
m1.add(m3);
m11.addActionListener(k);
m13.addActionListener(k);
f.setSize(350,200);
f.setMenuBar(mb);
f.setVisible(true);}
public void actionPerformed (ActionEvent e)
{ if (e.getActionCommand() == "打开")
{FileDialog fd1 = new FileDialog (f, "open", FileDialog.SAVE);
fd1.setVisible (true);
}
if (e.getActionCommand() == "保存")
{FileDialog fd2 = new FileDialog (f, "save", FileDialog.SAVE);
fd2.setVisible (true);
} }}
三、运行题中程序,然后按【思考问题】提示来分析、修改并体验程序。【思考问题】
①基本容器JFrame比起Frame有何特点?为什么这里定义了一个
c=this.getContentPane();
Frame是awt中的组件,JFrame是swing中的组件,JFrame 包含一个JRootPane 作为其唯一的子容器。
this.getContentPane()的作用是初始化一个容器,用来在容器上添加一些控件
②采用了什么布局管理器,各组件按什么次序加入组件的?
FlowLayout,从左到右排列成一行。
③很多地方用到this,这个this指什么?
1、表示对当前对象的引用;
2、表示用类的成员变量,而非函数参数,注
意在函数参数和成员变量同名时进行区分; 3、用于在构造方法中引用满足指定参数类型的构造器。
④分析事件执行方法 actionPerformed里面的下面三条语句起何作用?
a=Double.valueOf(TOprand1.getText()).doubleValue();
b=Double.valueOf(TOprand2.getText()).doubleValue();
Result.setText(String.valueOf(sum));
读出T0prand1和T0prand2中的数,和写入Result中。
⑤程序中对按钮事件的监听采用了什么方法?请修改成另外两种方法实验。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Ex9_1 extends JFrame
{ JTextField TOprand1;
JTextField TOprand2;
JTextField Result;
JLabel LAdd,LSum;
JButton BAdd,BClear;
Container c=null;
public Ex9_1()
{ TOprand1=new JTextField("0.0000");
TOprand2=new JTextField("0.0000");
Result=new JTextField("0.0000");
LAdd=new JLabel("+");
LSum=new JLabel("=");
BAdd=new JButton("加法");
BClear=new JButton("清除");
c=this.getContentPane();
c.setLayout(new FlowLayout());
c.add(TOprand1);
c.add(LAdd);
c.add(TOprand2);
c.add(LSum);
c.add(Result);
c.add(BAdd);
c.add(BClear);
this.pack();
this.setVisible(true);
PoliceMan p=new PoliceMan();
BAdd.addActionListener(p);
BClear.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{ TOprand1.setText("0.0000");
TOprand2.setText("0.0000");
Result.setText(String.valueOf("0.0000"));}});
this.addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{ System.exit(0);
}
}); }
class PoliceMan implements ActionListener
{
public void actionPerformed(ActionEvent e)
{ double a,b,sum;
a=Double.valueOf(TOprand1.getText()).doubleValue();
b=Double.valueOf(TOprand2.getText()).doubleValue();
sum=a+b;
Result.setText(String.valueOf(sum));
}
}
public static void main(String args[])
{ Ex9_1 mainFrame = new Ex9_1();
mainFrame.setSize(350, 200);
mainFrame.setTitle("GUI实验一");
}}
⑥将定义的类class Ex9_1 extends JFrame implements ActionListener去掉继承
extends JFrame,功能不变,程序如何修改?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Ex9_1 implements ActionListener
{ TextField TOprand1;
TextField TOprand2;
TextField Result;
Label LAdd,LSum;
Button BAdd,BClear;
Container c=null;
public Ex9_1()
{ Frame f=new Frame();
TOprand1=new TextField("0.0000");
TOprand2=new TextField("0.0000");
Result=new TextField("0.0000");
LAdd=new Label("+");
LSum=new Label("=");
BAdd=new Button("加法");
BClear=new Button("清除");
c.setLayout(new FlowLayout());
c.add(TOprand1);
c.add(LAdd);
c.add(TOprand2);
c.add(LSum);
c.add(Result);
c.add(BAdd);
c.add(BClear);
c.pack();
c.setVisible(true);
c.setSize(350, 200);
c.setTitle("GUI实验一");
BAdd.addActionListener(this);
BClear.addActionListener(this);
f.addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{ System.exit(0);
}});}
public void actionPerformed(ActionEvent e)
{ double a,b,sum;
if(e.getSource()==BAdd)
{ a=Double.valueOf(TOprand1.getText()).doubleValue(); b=Double.valueOf(TOprand2.getText()).doubleValue(); sum=a+b;
Result.setText(String.valueOf(sum));
}
if(e.getSource()==BClear)
{TOprand1.setText("0.0000");
TOprand2.setText("0.0000");
Result.setText(String.valueOf("0.0000"));}}
public static void main(String args[])
{ Ex9_1 mainFrame = new Ex9_1();
}}
⑦设置布局管理器为null,使组件摆放次序不变,重新修改程序。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Ex9_1 extends JFrame implements ActionListener
{ JTextField TOprand1;
JTextField TOprand2;
JTextField Result;
JLabel LAdd,LSum;
JButton BAdd,BClear;
Container c=null;
public Ex9_1()
{ TOprand1=new JTextField("0.0000");
TOprand2=new JTextField("0.0000");
Result=new JTextField("0.0000");
LAdd=new JLabel("+");
LSum=new JLabel("=");
BAdd=new JButton("加法");
BClear=new JButton("清除");
c=this.getContentPane();
c.setLayout(null);
c.add(TOprand1);
c.add(LAdd);
c.add(TOprand2);
c.add(LSum);
c.add(Result);
c.add(BAdd);
c.add(BClear);
this.pack();
this.setVisible(true);
BAdd.addActionListener(this);
BClear.addActionListener(this);
this.addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{ System.exit(0);
}
});
TOprand1.setBounds(00,00,50,20);
LAdd.setBounds(60,5,10,10);
TOprand2.setBounds(80,00,50,20);
LSum.setBounds(140,5,10,10);
Result.setBounds(160,00,50,20);
BAdd.setBounds(230,00,60,20);
BClear.setBounds(270,00,60,20);
}
public void actionPerformed(ActionEvent e)
{ double a,b,sum;
if(e.getSource()==BAdd)
{ a=Double.valueOf(TOprand1.getText()).doubleValue();
b=Double.valueOf(TOprand2.getText()).doubleValue();
sum=a+b;
Result.setText(String.valueOf(sum));
}
if(e.getSource()==BClear)
{TOprand1.setText("0.0000");
TOprand2.setText("0.0000");
Result.setText(String.valueOf("0.0000"));
} }
public static void main(String args[])
{ Ex9_1 mainFrame = new Ex9_1();
mainFrame.setSize(350, 200);
mainFrame.setTitle("GUI实验一");
}}
实验八 java小程序Applet
一、实验目的
1.了解java Applet基本框架结构、生命期。
2.了解Applet与HTML网页之间的应用关系。
3.了解HTML向Applet传递参数。
二、实验内容
1.Java Applet基本框架和生命期。Java源程序是project3\Ex8_1.java;网页HTML 文件是page1.html。
(1) Ex8_1.java文件:
import java.awt.*;
import java.applet.*;
import javax.swing.* ;
public class Ex8_1 extends Applet
{ public int i,j,k,l;
Font font;
public void init()
{ i++;
font=new java .awt .Font ("TimesRoman",Font.PLAIN ,36);
}
public void start()
{ j++;
System.out.println ("启动");
}
public void stop()
{k++;
System.out.println ("停止");
}
public void paint(Graphics g)
{ System.out.println ("作图");
l++;
int red =(int)(Math.random()*250);
int green =(int)(Math.random ()*250);
int blue =(int)(Math.random()*250);
g.setFont (font);
g.setColor (new Color (red,green,blue));
g.drawString ("初始化次数:"+String.valueOf(i),30,50);
g.drawString ("启动次数:"+String.valueOf(j),30,90);
g.drawString ("停止次数:"+String.valueOf(k),30,130);
g.drawString ("作图次数:"+String.valueOf(l),30,170);
}
}
(2) Page1.html文件:
【实验步骤】
①在编辑区先选中Ex8_1.java,编译java源文件,形成Ex8_1.class。
②再选中page1.html,运行该程序。
③出现浏览页面之后,对页面进行缩放和展开,观察页面中初始化次数、启动次数、
停止次数、作图次数的变化;注意字体颜色的变化;同时观察信息输出区中输出内
容的变化。
【思考问题】
①通过实验观察,总结你对Applet框架中的基本方法在不同生命期的作用。
1.在不同的生命周期中init、start只启动时执行一次,stop只在退出时执行一次,随着i,j,k,l的变化,paint执行着不同的程序。Init()完成初始化工作,紧接着自动调用start(),当用户由JAVA APPLET所在WEB界面转到其他页面,调用stop(),后返回时,再次调用start()。结束浏览时,自动调用destroy()。Paint()可使JAVA APPLET 在容器上显示某些信息。
②字体大小及颜色的变化由哪些语句确定的?请修改颜色为固定蓝色,字体从10到20
之间变化。
int red =(int)(Math.random()*250);
int green =(int)(Math.random ()*250);
int blue =(int)(Math.random()*250);
g.setFont (font);
g.setColor (new Color (red,green,blue));
int a = (int)(Math.random()*10+10);//产生数10-20
Font font=new Font("TimesRoman",Font.BOLD,a);
g.setFont (font);
g.setColor (Color.blue);
③这里用到两种输出字符串语句,请指出并说明它们的不同。
Drawstring()使用在指定的Brush和Font物件,System.out.println()为一般输出public abstract void drawString(String str,int x,int y)
使用此图形上下文的当前字体和颜色绘制由指定 string 给定的文本。最左侧字符的基线位于此图形上下文坐标系统的 (x, y) 位置处。 System.out.println()是控制输出打印。
2. HTML向Applet传递参数。HTML向Applet传进三个参数:一个字符串label;一个是背景颜色background;再一个是前景颜色foreground。在Applet侧接受过去并使用它们。
(1) HTML文件是page2.html
(2) Applet文件Ex8_2.java:
import java.awt.*;
import java.applet.*;
public class Ex8_2 extends Applet
{ String st1=new String ();
String receive;
int red,green,blue;
Font font=null;
public void init()
{String backcolor=getParameter("background");
String forecolor=getParameter("foreground");
receive=getParameter("label");
this.setLayout(new BorderLayout());
this.setLayout(null);
Label Lab=new Label("看前景颜色对我的变化");
Lab.setBounds(10,60,250,30);
red=Integer.decode("0x"+backcolor.substring(0,2)).intValue();
green=Integer.decode("0x"+backcolor.substring(2,4)).intValue();
blue=Integer.decode("0x"+backcolor.substring(4,6)).intValue();
this.setBackground(new Color(red,green,blue));
red=Integer.decode("0x"+forecolor.substring(0,2)).intValue();
green=Integer.decode("0x"+forecolor.substring(2,4)).intValue();
blue=Integer.decode("0x"+forecolor.substring(4,6)).intValue();
font=new Font("TimesRoman",Font.BOLD,18);
this.setFont(font);
this.setForeground(new Color(red,green,blue));
this.add(Lab);
}
public void paint(Graphics g)
{ g.setColor(Color.blue);
g.setFont(new Font("TimesRoman",Font.BOLD,24));
g.drawString(receive,10,25);
}
} //end Applet1
【实验步骤】
①在编辑区先选中Ex8_2.java,编译java源文件,形成Ex8_2.class。
②再选中page2.html,运行该程序。
③每次修改HTML侧的background或foreground值,然后运行观察结果。
【思考问题】
①从HTML网页传过来的参数在Applet侧是如何获取、如何转换、如何利用的?
如:网页文件中写入param name=label value="这是从网页传过来的
在JAVA程序中写入 receive=getParameter("label");则receive的值即为"这是从网页传过来的”
②页面中显示了两个字符串,所用的方法有何不同?
“看前景颜色对我的变”通过添加标签组件来显示,
“这是从网页传过来的”通过调用Paint()函数来实现显示
③使从HTML接受过来的字符串显示的字体和颜色与“看前景颜色对我的变化”字符串
相同,怎样修改程序?
将g.setColor(Color.blue);
g.setFont(new Font("TimesRoman",Font.BOLD,24))
改为:
g.setColor(this.getForeground());
g.setFont(new Font("this.getFont()",Font.BOLD,24))
3.编写一个应用程序,有一个标题为“计算”的窗口,窗口的布局为FlowLayout布局。设计4个按钮,分别命名为“加”、“差”、“积”、“除”,另外,窗口中还有3个文本框。单击相应的按钮,将两个文本框的数字做运算,在第三个文本框中显示结果。要求处理NumberFormatException。
import java.awt.*;
import java.awt.event.*;
class Calculated extends Frame implements ActionListener
{
TextField text1,text2,text3; //3个文本框
Button buttonH,buttonC,buttonJ,buttonS; //4个按钮
Calculated(String s)
{
super(s);
setLayout(new FlowLayout()); //FlowLayout布局
text1=new TextField(10);
text2=new TextField(10);
text3=new TextField(17);
buttonH=new Button("加");
buttonC=new Button("差");
buttonJ=new Button("积");
buttonS=new Button("除");
add(text1);
add(text2);
add(text3);
text3.setEditable(false);
add(buttonH);
add(buttonC);
add(buttonJ);
add(buttonS);
buttonH.addActionListener(this);
buttonC.addActionListener(this);
buttonJ.addActionListener(this);
buttonS.addActionListener(this); addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
setBounds(100,100,160,180);
setVisible(true);
validate();
}
public void actionPerformed(ActionEvent e) {
double num1=0,num2=0,totle=0;
try
{
num1= Double.parseDouble(text1.getText()); num2= Double.parseDouble(text2.getText()); if(e.getSource()==buttonH)
{
totle=num1+num2;
text3.setText("和"+totle);
}
else if(e.getSource()==buttonC)
{
totle=num1-num2;
text3.setText("差"+totle);
}
else if(e.getSource()==buttonJ)
{
totle=num1*num2;
text3.setText("积"+totle);
}
else if(e.getSource()==buttonS)
{
totle=num1/num2;
text3.setText("商"+totle);
}
}
catch(NumberFormatException event)
text3.setText("请输入数字字符!");
}
}
}
public class Ex8_3
{
public static void main(String args[])
{
Calculated calc=new Calculated("计算"); //标题为“计算”的窗口
}
}
4.编写应用程序,有一个窗口对象,该窗口取它的默认布局: BorderLayout布局,北面添加一个List组件,该组件有四个商品名称的选项。中心添加一个文本区,当选择List组件中的某个选项后,文本区显示对该商品的价格和产地:当双击List组件中的某个选项后,文本区显示该商品的详细广告。
import java.awt.*;
import java.awt.event.*;
class WindowGoods extends Frame implements ActionListener,ItemListener
{
String s[]={"产地:北京","产地:上海","产地:沈阳","产地:广东"};
String p[]={"价格:3200","价格:158","价格:13.2","价格:320/打"};
String a[]={"本商品****","本商品*****","本商品******","本商品*******"};
List list;
TextArea text;
WindowGoods()
{
list=new List(3,false);
text=new TextArea(6,20);
text.setEditable(false);
list.add("商品1");
list.add("商品2");
list.add("商品3");
list.add("商品4");
add(list,BorderLayout.NORTH);
add(text,BorderLayout.CENTER);
list.addItemListener(this);
list.addActionListener(this);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
);
setBounds(100,100,300,300);
setVisible(true);
validate();
}
public void itemStateChanged(ItemEvent e)
{
if(e.getItemSelectable()==list)
{
int m=list.getSelectedIndex();
text.setText(p[m]+'\n'+s[m]);
}
}
public void actionPerformed(ActionEvent e)
{
int n=list.getSelectedIndex();
text.setText(a[n]);
}
}
public class Ex8_4
{
public static void main(String args[])
{
new WindowGoods();
}
}
5.编写应用程序,有一个标题为“改变颜色”的窗口,窗口的布局为null,在窗口中有3个按钮和一个画布,3个按钮的颜色分别是红、绿、蓝。单击相应的按钮,画布绘制相应颜色的圆。
import java.awt.*;
import java.awt.event.*;
class WindowChangeColor extends Frame implements ActionListener
{
Button buttonRed,buttonGreen,buttonBlue;
Mycanvas canvas;
WindowChangeColor(String s)
{
super(s);
setLayout(null);
buttonRed=new Button("红色");
buttonGreen=new Button("绿色");
buttonBlue=new Button("蓝色");
canvas=new Mycanvas();
buttonRed.setBackground(Color.red); buttonGreen.setBackground(Color.green); buttonBlue.setBackground(Color.blue);
add(canvas);
canvas.setBounds(10,10,150,150);
add(buttonRed);
buttonRed.setBounds(10,170,50,30);
add(buttonGreen);
buttonGreen.setBounds(70,170,50,30);
add(buttonBlue);
buttonBlue.setBounds(130,170,50,30); buttonRed.addActionListener(this); buttonGreen.addActionListener(this); buttonBlue.addActionListener(this); addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
setBounds(100,100,200,250);
setVisible(true);
validate();
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==buttonRed)
{
canvas.setX(1);
canvas.repaint();
}
else if(e.getSource()==buttonGreen)
{
canvas.setX(2);
canvas.repaint();
}
else if(e.getSource()==buttonBlue)
{
canvas.setX(3);
canvas.repaint();
}
}
}
class Mycanvas extends Canvas
{
int x=0;
Mycanvas()
{
setBackground(Color.white);
}
public void setX(int y)
{
x=y;
}
public void paint(Graphics g)
{
switch(x){
case 1:
g.setColor(Color.red);
break;
case 2:
g.setColor(Color.green);
break;
case 3:
g.setColor(Color.blue);
break;
default:
g.setColor(Color.white);
}
g.drawOval(65,65,50,50);
}
}
public class Ex8_5
{
public static void main(String args[]) {
new WindowChangeColor("改变颜色");
}
}
Java 实验二 实验二类与对象 实验目的 1、掌握面向对象程序设计的方法与Java 作为面向对象程序设计语言的特点; 2、掌握修饰符与构造方法的使用规则; 3、掌握接口的特点、结构、调用与继承; 4、掌握如何创建包, 通过包如何管理类; 5、掌握Java 的继承机制与实现多态的方法实验内容 (1)定义一个类Student,属性为学号、姓名与成绩;方法为增加记录SetRecord与得到记录GetRecord。SetRecord赋值学号、姓名与成绩,GetRecord通过学号得到考生的成绩。通过实例验 证编程无误。 ⑵定义一个接口Area,其中包含一个计算面积的抽象方法calculateArea()然后设 计Circle与Rectan两个类实现这个接口的方法calculateArea()分别计算圆与矩形的面积。通过实例验证编程无误。 (3) 假定根据学生的3门学位课程的分数决定其就是否可以拿到学位,对于本科生, 如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均分超过80分才能够通过。根据上述要求,请完成以下Java类的设计: (i)设计一个基类Student描述学生的共同特征。 (ii)设计一个描述本科生的类Undergraduate该类继承并扩展Student类。 (iii)设计一个描述研究生的类Graduate该类继承并扩展Student类。 (iv)设计一个测试类StudentDemo分别创建本科生与研究生这两个类的对象,并输 出相关信息 附实验一名称就是Java 语言基础实验报告分为以下几个部分 一实验名称二实验目的三实验仪器四实验步骤(把您的操作一步一步写清楚,java 程序代码要写) 五实验结果(程序运行后的结果就就是DOS 环境下运行出来的结果写在实验报告上) 六实验讨论(实验过程中的错误及如何改正,您的心得体会等) 答案: (1)定义一个类Student,属性为学号、姓名与成绩;方法为增加记录SetRecord与得到记录GetRecord。SetRecord 赋值学号、姓名与成绩,GetRecord 通过学号得到考生的成绩。通过实例 验证编程无误 public class Student { private int ID; private String name; private float score; public void SetRecord(int ID,String name,float score){ this、ID=ID; this、name=name; this、score=score; } public float getRecord(int ID){ if(ID==this 、ID) return this 、score; else return -1; }
信息工程学院1 Java程序设计实验/实习报告 学院: 班级:地信姓名: 学号:2 成绩:A 面向对象编程 一、实验/实习过程 (一)实验目的 掌握Java程序面向对象编程的基本架构,会运用面向对象的思想编写Java程序。(二)实验过程 【实验题1】完成如下程序,完成思考题 [基本要求] 运行程序并观察运行结果。 [思考问题] 试述程序中主要语句的作用 运行结果: 主要程序语句的作用已标注为注释: class CCircle // 类的声明 { double pi; //申明成员变量 double radius; //申明成员变量 double getRadius() //创建方法 实验报告的内容与格式按任课教师的要求书写。
{ return radius; //返回 radius } void setCircle(double r, double p) //创建方法 { pi=p; //初始化数据成员 radius=r; //初始化数据成员 } } public class Ex2_1 //类的声明 { public static void main(String args[]) //主方法 { CCircle cir1=new CCircle(); //创建对象 cir1.setCircle(2.0,3.1416); //调用对象 System.out.println("radius="+cir1.getRadius()); //输出结果 } } 【实验题2】设计一个用来描述汽车的类,使用类的静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。 package zz1; public class Car{ String name; int speed; int jiaodu; public Car(String name,int speed,int jiaodu){ https://www.doczj.com/doc/3110337907.html,=name; this.speed=speed; this.jiaodu=jiaodu; System.out.println("车主:"+https://www.doczj.com/doc/3110337907.html,); System.out.println("车速为:"+this.speed);
java实验报告 实验题目运用JavaFx实现时钟动画学生姓名 指导教师 学院 专业班级 完成时间2014年12
目录 一、实验目的 (3) 二、实验开发环境和工具 (3) 三、实验内容 (3) 四.实际简要描述: (3) 五.程序清单 (4) 六.结果分析 (10) 七.调试报告 (11) 八.实验心得 (11)
一、实验目的 1.了解和掌握JavaFx动画基本概念和相关用法 二、实验开发环境和工具 可以在Linux或者Windows操作系统上搭建开发环境,可使用集成开发环境Eclipse,使用Java语言,工具包使用JDK1.8。 三、实验内容 基于JavaFx画出如下所示可动态变化的时钟。要求按‘start’按钮可启动时钟,按‘stop’按钮可让时钟暂停。时钟初始时显示当前时间并开始动态变化。 四.实际简要描述: 1.新建一个动态时针 EventHandler
3.建立按钮 HBoxhbox=new HBox();//新建HBOX布局 hbox.setSpacing(20); hbox.setLayoutX(310); hbox.setLayoutY(520); Start = new Button("Start");//建立start按钮 Start.setPrefSize(80, 40); Stop = new Button("Stop");//建立stop按钮 Stop.setPrefSize(80, 40); hbox.getChildren().addAll(Start,Stop);//将按钮加入HBOX getChildren().add(hbox); 五.程序清单 importjavafx.application.Application; importjava.util.Calendar; importjava.util.GregorianCalendar; https://www.doczj.com/doc/3110337907.html,yout.Pane; importjavafx.scene.paint.Color; importjavafx.scene.shape.Circle; importjavafx.scene.shape.Line; importjavafx.scene.text.Text; importjavafx.application.Application; importjavafx.stage.Stage; importjavafx.animation.KeyFrame; importjavafx.animation.Timeline; importjavafx.event.ActionEvent;
华北电力大学 实验报告 实验名称Java程序面向对象设计(一)课程名称Java程序设计 专业班级:学生姓名: 学号:成绩: 指导教师:张学斌实验日期:
一、实验目的及要求 1.掌握类的定义。 2.掌握成员变量和成员方法的定义。 3.掌握构造方法的定义和使用。 4.掌握类的多态性 二、实验环境 Windows2000/Windows XP,JDK 1.2~1.6 三、试验内容和步骤 要求按照实验内容,写出详细实验过程和步骤,必要时截图。 实验1 机动车 1.1实验要求 编写一个Java应用程序,该程序有两个类:Vehicle(用于刻画机动车)和User(主类)。具体要求如下: Vehicle类有一个double类型的变量speed,用于刻画机动车的速度,一个int型变量power,用于刻画机动车的功率。定义了speedUp(int s)方法,体现机动车有加速功能。定义了speedDown()方法,体现机动车有减速功能。定义了setPower(int s),用于设置机动车的功率。定义了getPower()方法,用于获取机动车的功率。 在主类User的mian()方法中用Vehicle类创建对象,并让该对象调用方法设置功率,演示加速和减速功能。 1.2程序模板 Vehicle.java public class Vehicle { 【代码1】//声明double型变量speed,刻画速度 【代码2】//声明int型变量power,刻画功率 void speedUp(int s) { 【代码3】//将参数s的值与成员变量speed的和赋值给成员变量speed } void speedDown(int d) { 【代码4】//将成员变量speed与参数d的差赋值给成员变量speed } void setPower(int p) { 【代码5】//将参数p的值赋值给成员变量power } int getPower() { 【代码6】//返回成员变量power的值
GDOU-B-11-112 广东海洋大学学生实验报告书(学生用表) 实验名称 实验六? Java 的接口与实现 课程名称 JaVa 程序设计与开发 课程号16232204 技术 、实验目的 (1) 学习掌握Java 中类怎样实现接口、接口回调技术; (2) 学习掌握Java 程序中面向接口的编程思想。 二、 实验任务 完成实验六指导上实验1、实验2、实验3的实验任务 三、 实验仪器设备和材料 安装有J2SE 开发工具的PC 机。 四、实验内容和步骤 实验1 代码如下: Estimator.java in terface CompurerAverage{ public double average(double x[]); } class Gymn astics impleme nts CompurerAverage{ public double average(double x[]){ int coun t=x .len gth; double aver=0,temp=0; for(int i=0;i
aver=aver/(co un t-2); else aver=0; retur n aver; } } class School impleme nts CompurerAverage{ public double average(double[] x){ int coun t=x .len gth; double sum=0; for(int i=0;i 南京信息工程大学实验(实习)报告 实验(实习)名称Java类实验(实习)日期 10.17 得分指导教师刘文杰院计算机与软件学院专业软件工程年级 2017级班次 1 姓名张成学号20171344024 1.实验目的: 1)熟练MyEclipse工具的使用与调试; 2)掌握Java类、方法和变量的定义和使用; 3)熟悉方法重载和覆盖、掌握this和supper关键字使用; 4)掌握4类访问控制符的使用。 2.实验内容: (1)定义一个类Circle,实现其面积计算功能getArea(); (2)编写程序,读入一个正整数并按降序显示它的所有最小因子。(教材第3章习题9)(3)利用多态性编程,实现求三角形、正方形和圆形的面积。(教材第4章习题6) 3.实验步骤 1、 public class Circle { public double radius; public Circle(double r) { radius= r; } public double getArea() { return radius*radius*Math.PI; } public static void main(String[] args) { Circle area1 = new Circle(5); System.out.println("The area is " + area1.getArea()); } } 2、 import java.util.Scanner; public class Read { public static void main(String[] args) { Scanner input =new Scanner(System.in); System.out.print("输入一个正整数:"); int n=input.nextInt(); int []a=new int[n]; int []b=new int[n]; int p,q=0,m=0; for(p=2;p<=n;p++) { while(n%p==0) { n=n/p; if(n!=1) { a[q]=p; q++; } else { a[q]=p; } } } while(q!=-1) { b[m]=a[q]; m++; q--; } for(p=0;p 1.设计一个名为figure的图形软件包(package)。包中包 含三角形、矩形、圆三个类。要求:(1)每个类都要构造 方法并为成员设置get和set方法;(2)每个类都要有计 算周长和面积的成员方法;(3)完成该软件包后的编码后, 在另一个包的含有main方法的类中编写代码,分别使用 图形软件包中的三个类,生成三个对象,并打印出其周长 和面积。 ****************************************************** package figure; public class juxing{//矩形的计算函数 private double lenth,width; public juxing(){ lenth=0; width=0; } public juxing (double x,double y){ lenth=x; width=y; } public void setLenth(double lenth){ this.lenth=lenth; } public double getLenth(){ return lenth; } public void setWidth(double width){ this.width=width; } public double getWidth(){ return width; } public double perimeter(){ return lenth*width; } public double Area(){ return (lenth+width)*2; } } ****************************************************** package figure; import java.math.*; public class sanjiaoxing {//三角形的计算函数 private double side1; private double side2; private double side3; public sanjiaoxing(){ side1=0; side2=0; side3=0; } public sanjiaoxing(double x,double y,double z){ side1=x; side2=y; side3=z; } public void setSide1(double side1){ this.side1=side1; } public double getSide1(){ return side1; } public void setSide2(double side2){ this.side2=side2; } public double getSide2(){ return side2; } public void setSide3(double side3){ this.side3=side3; } public double getSide3(){ return side3; } public double perimeter(){ return side1+side2+side3; } public double Area(){ double p=(side1+side2+side3)/2; return Math.sqrt(p*(p-side1)*(p-side2)*(p-side3)); } } ****************************************************** package figure; import java.math.*; public class yuanxing {//圆形的计算函数 实验一 1、实验题目 体操比赛计算选手成绩的办法是去掉一个最高分和一个最低分再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班学生的平均成绩。Gymnastics 类和School 类都实现了ComputerAverage接口,但实现方式不同。 2、程序代码 interface ComputerAverage{ public double average(double x[]); } class Gymnastics implements ComputerAverage{ public double average(double x[]){ int count=x.length; double aver=0,temp=0; for(int i=0;i 华北电力大学 实验报告实验名称Java程序面向对象设计(一)课程名称Java程序设计 专业班级:学生姓名: 学号:成绩: 指导教师:张学斌实验日期: 一、实验目的及要求 1.掌握类的定义。 2.掌握成员变量和成员方法的定义。 3.掌握构造方法的定义和使用。 4.掌握类的多态性 二、实验环境 Windows2000/Windows XP,JDK 1.2~1.6 三、试验内容和步骤 要求按照实验内容,写出详细实验过程和步骤,必要时截图。 实验1 机动车 1.1实验要求 编写一个Java应用程序,该程序有两个类:Vehicle(用于刻画机动车)和User(主类)。具体要求如下: Vehicle类有一个double类型的变量speed,用于刻画机动车的速度,一个int型变量power,用于刻画机动车的功率。定义了speedUp(int s)方法,体现机动车有加速功能。定义了speedDown()方法,体现机动车有减速功能。定义了setPower(int s),用于设置机动车的功率。定义了getPower()方法,用于获取机动车的功率。 在主类User的mian()方法中用Vehicle类创建对象,并让该对象调用方法设置功率,演示加速和减速功能。 1.2程序模板 Vehicle.java 【代码1】//声明double型变量speed,刻画速度 【代码2】//声明int型变量power,刻画功率 void speedUp(int s) { 【代码3】 //将参数s的值与成员变量speed的和赋值给成员变量speed } void speedDown(int d) { 【代码4】//将成员变量speed与参数d的差赋值给成员变量speed } void setPower(int p) { 【代码5】 //将参数p的值赋值给成员变量power } int getPower() { 【代码6】 //返回成员变量power的值 } double getSpeed() { return speed; } } ---------------------------------------------------------------------------------------------- User.java 第二次实验代码 1.由键盘输入10个整数,比较并输出其中的最大值和最小值。 import java.util.Scanner; public class Lab2_2{ public static int maximum(int array[]){ int max=array[0]; for(int i=1;i max=maximum(intArray); min=minimum(intArray); System.out.println("max="+max+", min="+min); } } 2.随机产生50个1-100之间的整数,存放于一个10?5的二维数组中,要求按 照10?5的格式打印这个数组(即显示10行,每行5个数,数与数之间间隔一个空格),并求出该数组所有元素之和。 public class Lab2_3{ public static void main(String args[]){ int a1[][]=new int[10][5]; int sum=0; for(int i=0;i<10;i++) {for (int j=0;j<5;j++) { int rand=(int)(Math.random()*100+1); a1[i][j]=rand; sum+=a1[i][j]; System.out.print(a1[i][j]+" ");} System.out.println();} System.out.println("这个数组的总和为:"+sum); } } 3.4. 见第三章课后习题 信息工程学院 Java程序设计实习报告 JAVA图形用户界面 实验六Java图形用户界面 1.实验目的 (1)掌握图形用户界面基本组件。 (2)了解如何使用布局管理器对组件进行管理。 (3)掌握Java事件处理机制。 2.实验内容 实验题1 编写一个模拟计算器的程序,使用面板和网格布局,添加一个文本框,10个数字按钮(0-9),4个加减乘除按钮,一个等号按钮,一个清除按钮,要求将计算公式和结果显示在文本框中。 运行结果: 实验报告的内容与格式按任课教师的要求书写。 加法: 主要代码: private void initComponents() { jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton(); jButton5 = new javax.swing.JButton(); jButton6 = new javax.swing.JButton(); jButton7 = new javax.swing.JButton(); jButton8 = new javax.swing.JButton(); jButton9 = new javax.swing.JButton(); jButton10 = new javax.swing.JButton(); jButton11 = new javax.swing.JButton(); jButton12 = new javax.swing.JButton(); jButton13 = new javax.swing.JButton(); jButton14 = new javax.swing.JButton(); jButton15 = new javax.swing.JButton(); jTextField1 = new javax.swing.JTextField(); 实验1 1.实验要求: 编写一个Java应用程序,该程序在命令行窗口输出希腊字母表。 2.实验内容: 3.实验分析: (1)将一个double型数据直接赋值给float型变量,程序编译时提示怎样的错误。 可能损失精度。 (2)在应用程序的main()方法中增加语句:float x=0.618,程序能编译通过吗? 不能通过编译,提示可能损失精度。 (3)在应用程序的main()方法中增加语句:byte b=128编译能通过吗?在应用程序的main()方法中增加语句:int z=(byte)128;程序输出变量z的值是多少? 增加byte b=128时编译不能通过,提示可能损失精度。 增加int z=(byte)128时结果如下所示。 实验2 1.实验要求: 编写一个Java应用程序,该程序在命令行窗口输出数组的引用以及元素的值。 2.实验内容: 3.实验分析: (1)在程序的【代码4】之后增加语句”a[3]=200;”,编译是否有错?运行是否有错? (2)在程序的【代码4】之前输出二维数组b的各个一维数组的长度和引用。 (3)在程序的【代码4】之后输出二维数组b的各个一维数组的长度和引用。 实验3 1.实验要求: 编写一个Java应用程序,输出数组a的全部元素,并将数组a的全部或部分元素复制到其他数组中,然后改变其他数组的元素的值,再输出数组a的全部元素。 2.实验内容: 3.实验分析: (1)在程序的【代码4】之后增加语句:int []tom=Arrays.copyOf(c,6); System.out.println(Arrays.toString(tom)); (2)在程序的最后一个语句之后增加语句:int []jerry=Arrays.copyOf(d,1,8); System.out.println(Arrays.toString(jerry)); 实验二 Java基本数据类型与控制语句 【目的】 ①掌握char型数据和int型数据之间的相互转换,同时了解unicode字符表; ②掌握使用if…else if多分支语句; ③使用if…else分支和while循环语句解决问题。 【内容】 1.输出希腊字母表。 ?实验要求: 编写一个Java应用程序,该程序在命令行窗口输出希腊字母表。 ?程序: GreekAlphabet.java public class GreekAlphabet { public static void main (String args[ ]) { int startPosition=0,endPosition=0; char cStart='α',cEnd='ω'; startPosition=cStart; //cStart做int型转换据运算,并将结果赋值给startPosition endPosition=cEnd; //cEnd做int型转换运算,并将结果赋值给endPosition System.out.println("希腊字母\'α\'在unicode表中的顺序位置:"+(int)c); System.out.println("希腊字母表:"); for(int i=startPosition;i<=endPosition;i++) { char c='\0'; c=(char)i; //i做char型转换运算,并将结果赋值给c System.out.print(" "+c); if((i-startPosition+1)%10==0) System.out.println(""); } } } 运行结果: ?实验后的练习: 1.将一个double型数据直接赋值给float型变量,程序编译时提示怎样的错误? 实验报告 班级: 学号: 姓名: 实验二标识符、关键字和数据类型 一、实验目的 1.认识标识符、关键字、运算符及数据类型。 2.掌握标识符的书写格式、常见的基本数据类型以及运算符的使用方式。 3.了解强制数据类型转换和弱类型转换。 二、实验原理 Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。 Java标识符给变量起上一个名字叫做变量名称,这个自定义的变量名称其实就是一个标识符,其实你自定义的类名称也是一个标识符,也就是说你自定义的名称都是标识符,它可以是类的名称、变量的名称、包的名称、方法的名称等。 1. 标识符可以由字母,数字,下划线(__),美元($)组成,但是不能包含@,%,空格等其他的特殊符号,不能以数字开头。例如 123name 就是不合法的。 2.标识符不能是Java关键字和保留字(Java预留的关键字,或者以后升级版本中有可能作为关键字),但可以包含关键字和保留字~例如:不可以使用void 作为标识符,但是Myvoid 可以。 3.标识符是严格却分大小写的,所以一定要分清alibaba和ALIbaba是两个不同的标识符哦。 4.标识符的命名最好能反应出其作用,做到见名知意。 Java运算符算术运算符、赋值运算符、比较运算符、逻辑运算符、条件运算符。 1.算术运算符:算术运算符主要用于进行基本的算术运算,如加法、减法、乘法、除法等。 2.赋值运算符:赋值运算符是指为变量或常量指定数值的符号。如可以使用“=” 将右边的表达式结果赋给左边的操作数。 3.比较运算符:比较运算符用于判断两个数据的大小,例如:大于、等于、不等于。比较的结果是一个布尔值( true 或 false )。 4.逻辑运算符:逻辑运算符主要用于进行逻辑运算。 5.条件运算符: 条件运算符( ? : )也称为“三元运算符”。 语法形式:布尔表达式?表达式1 :表达式2。 运算过程:如果布尔表达式的值为true ,则返回表达式1 的值,否则返回表达式2 的值。 Java类型转换:基本数据类型中,布尔类型boolean占有一个字节,由于其本身所代码的特殊含义,boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换),否则,将编译出错。 1.基本数据类型中数值类型的自动类型提升。 数值类型在内存中直接存储其本身的值,对于不同的数值类型,内存中会分配相应的大小去存储。如:byte类型的变量占用8位,int类型变量占用32位等。相应的,不同的数值类型会有与其存储空间相匹配的取值范围。 2.基本数据类型中的数值类型强制转换 1、实验题目 体操比赛计算选手成绩的办法是去掉一个最高分和一个最低分再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班学生的平均成绩。Gymnastics 类和School 类都实现了ComputerAverage接口,但实现方式不同。 2、程序代码 interface ComputerAverage{ public double average(double x[]); } class Gymnastics implements ComputerAverage{ public double average(double x[]){ int count=; double aver=0,temp=0; for(int i=0;i 实验报告 实验名称工资管理程序第 2 次实验实验日期 2009- - 指导教师 班级 04软件工程学号姓名成绩 一、实验目的 1、掌握类的定义、域的定义及方法的定义。 2、掌握对象的定义与使用 3、掌握抽象类的用法 二、实验内容 1、建立一个抽象类Employee类 至少包括成员变量: 名、姓、年龄、性别 至少包括构造函数: 名和姓作为参数 至少包括方法: 取名称 至少包括抽象方法: 取收入earnings() 重写Object的toString()方法,返回Employee类的描述信息如名称信息 2、建立老板类Boss类继承Employee类 至少构造函数以名和姓及周工资作为参数 老板的工资是周工资 3、建立销售人员类 销售人员的收入= 销售量* 单价 要求:每个销售人员对象都能知道当前共有多少个销售人员 ... ... 4、在main函数中,分别创建老板对象、销售人员对象 三、实验步骤 3.1 进入eclips,创建一个名为employ的工程,新建一个抽象类Employee类 类中的成员变量有private String firstname; private String lastname; private String sex; private String age; 构造函数为employee(){} //无参数的构造函数 employee(String fn,String ln) //以名和姓为参数的构造函数 { this.firstname=fn; https://www.doczj.com/doc/3110337907.html,stname=ln; } employee(String fn,String ln,String s,String a)//参数完整的构造函数 { this(fn,ln); 实验一 水仙花数: class shuixianhua {//水仙花数 public static void main(String arg[]) { int i,a,a1,b,b1,c; for(i=100;i<1000;i++) { a=i%10; a1=i/10; b=a1%10; b1=a1/10; c=b1%10; if(i==(a*a*a+b*b*b+c*c*c)) System.out.println(i); } } } 输出如下: 153 370 371 407 打印出100以内素数: public class sushu { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int i,j,k=0; for(i=2;i<100;i++){ if(i==2) System.out.println(i); i++; for(j=2;j k=1; } if(k==1) System.out.println(i); } } 求1!+2!+ (20) public class jiecheng { public static void main(String[] args) { int i,sum=0,k; for(i=1;i<=20;i++) { k=ji(i); sum=k+sum; } System.out.print(sum); } static int ji(int n) { if(n==1) return 1; else return ji(n-1)*n; } } 习题2.6 public class Test{ public static void main(String[] args)//第19题,打出图形.菱形{ int n=3; for(int i=1;i<=n;i++) { for(int k=n-1;k>=i;k--) { System.out.print(" "); } for(int j=1;j<=2*i-1;j++)//打印* { 一. 概念复习和巩固(请在课后和上机前完成下面的练习) 1.给出下面的程序:() public class ex40(){ public static void main(String[ ] args){ StringBuffer a=new StringBuffer(“A”); StringBuffer b=new StringBuffer(“B”); method(a,b); System.out.println(a+”,”+b); } Static void method(StringBuffer x, StringBuffer y){ x.append(y); y=x; } } 正确的输出结果是 A.A,B B. A,A C.B,B D.AB,B 2. StringBuffer() 构造方法,为字符串分配多少个字符的缓存,它是默认的构造方法() A. 9 B. 12 C. 16 D. 20 3.下面的程序输出的结果为:() public class Test { public static void main(String[] args) { StringBuffer buffer = new StringBuffer(); int value = 18; do { int temp = value & 0x07; buffer.append(temp); }while((value>>>=3)!=0); System.out.println(buffer.reverse()); } } A. 24 B. 23 C. 25 D. 22 4.以下语句的含义是()实验二 Java类-实验报告
JAVA实验2复习资料
JAVA第六次实验报告接口
java程序设计-试验2(学生版)()
JAVA第二次实验代码
java实验报告实验六Java图形用户界面
JAVA第四版实验2实验报告
Java实验二
java实验报告实验二
java第六次实验报告接口
参考_JAVA实验报告
java实验答案
java实验6