当前位置:文档之家› 实验五 Java图形界面及多线程

实验五 Java图形界面及多线程

实验五 Java图形界面及多线程
实验五 Java图形界面及多线程

实验五图形界面及多线程

【实验目的】

一、掌握Jpanel的使用方法;

二、掌握JAVA简单图形界面的设计;

三、掌握JAVA多线程控制。

【实验内容】

一、在一个Jpanel中显示一个小球,当点击鼠标时,开始移动小球;当小球撞到Jpanel的边框时,小球将反弹回去继续移动。小球用一个线程来控制其移动;

二、每点击一次鼠标,增加一个移动的小球,最多产生20个小球,随机选择小球的颜色;

三、增加功能,当两个小球相撞时,它们将各自反弹。

【实验结果】

//小球类

import java.awt.Color;

import java.awt.Point;

import java.awt.Rectangle;

import java.awt.Shape;

import java.awt.geom.Ellipse2D;

import java.util.Random;

public class Ball {

private double x;

private double y;

private double xR=30;

private double yR=30;

private double xMove;

private double yMove;

private Color color;

private Ellipse2D shape;

private static Random random=new Random();

public Ball(){

color=new

Color(random.nextInt(256),random.nextInt(256),random.nextInt(256));

xMove=Math.cos(random.nextDouble()*6.24)*10;

yMove=Math.cos(random.nextDouble()*6.24)*10;

}

public void setLocation(Point point){

x=point.getX();

y=point.getY();

}

public void move(Rectangle rect) {

x+=xMove;

y+=yMove;

if(x

x=rect.getMinX();

xMove=-xMove;

}else if((x+xR)>rect.getMaxX()){

x=rect.getMaxX()-xR;

xMove=-xMove;

}

if(y

y=rect.getMinY();

yMove=-yMove;

}else if((y+yR)>rect.getMaxY()){

y=rect.getMaxY()-yR;

yMove=-yMove;

}

}

public void hit(Ball ball){

double temp;

if(((this.x-ball.x)*(this.x-ball.x)+(this.y-ball.y)*(this.y-ball. y))

if(((this.xMove<=0&&ball.xMove>=0)||(this.xMove>=0&&ball.xMove<=0 ))

&&((this.yMove>=0&&ball.yMove>=0)||(this.yMove<=0&&ball.yMove<=0) )){

temp=this.xMove;

this.xMove=ball.xMove;

ball.xMove=temp;

}else

if(((this.xMove<=0&&ball.xMove<=0)||(this.xMove>=0&&ball.xMove>=0))

&&((this.yMove<=0&&ball.yMove>=0)||(this.yMove>=0&&ball.yMove<=0) )){

temp=this.yMove;

this.yMove=ball.yMove;

ball.yMove=temp;

}else{

temp=this.xMove;

this.xMove=ball.xMove;

ball.xMove=temp;

temp=this.yMove;

this.yMove=ball.yMove;

ball.yMove=temp;

}

}

}

public Shape getShape(){

if(shape==null)

shape=new Ellipse2D.Double(x, y, xR, yR);

else

shape.setFrame(x, y, xR, yR);

return shape;

}

public Color getColor(){

return color;

}

}

//绘制小球类

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.util.ArrayList;

import java.util.List;

import javax.swing.ImageIcon;

import javax.swing.JPanel;

public class BallPanel extends JPanel{

private static final long serialVersionUID = 2L;

public List balls;

public BallPanel(){

balls=new ArrayList();

startPaintThread();

new ImageIcon("292-11020215103447.jpg").getImage();

}

private void startPaintThread() {

new Thread(){

public void run() {

while(true) {

repaint();

try {

Thread.sleep(50);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}.start();

}

protected void paintComponent(Graphics g) {

super.paintComponent(g);

ImageIcon image = new

ImageIcon(this.getClass().getResource("zm.jpg"));

g.drawImage(image.getImage(),-255,-150,null);

Graphics2D g2 = (Graphics2D)g;

for(int i=0;i

for(int j=i+1;j

balls.get(i).hit(balls.get(j));

for (Ball ball : balls) {

g2.setColor(ball.getColor());

g2.fill(ball.getShape());

g2.setBackground(ball.getColor());

}

}

public void addBall(Ball ball) {

balls.add(ball);

}

}

//小球线程类

import java.awt.Rectangle;

public class BallThread extends Thread{

private Ball ball;

private Rectangle rect;

public BallThread(Ball ball, Rectangle rect) {

this.ball = ball;

this.rect = rect;

}

public void run() {

while(true){

ball.move(rect);

try {

Thread.sleep(50);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

//主界面类

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Point;

import java.awt.Toolkit;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

public class BallFrame extends JFrame {

private static final long serialVersionUID = 1L;

private BallPanel ballPanel;

private JLabel Jshow=new JLabel("制作:章进兴 0941901228");

public BallFrame(){

ballPanel =new BallPanel();

this.add(ballPanel, BorderLayout.CENTER);

actionHandler();

showMe();

}

private void actionHandler(){

ballPanel.addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent e) {

if (e.getButton() == MouseEvent.BUTTON1) {

if (ballPanel.balls.size()<20) {

Ball ball = new Ball();

Point point = e.getPoint();

ball.setLocation(point);

new BallThread(ball,

ballPanel.getBounds()).start();

ballPanel.addBall(ball);

} else {

JOptionPane.showMessageDialog(null,"球太多!");

}

} else {

if (ballPanel.balls.size() < 1) {

JOptionPane.showMessageDialog(null,"已无球!");

return;

}

ballPanel.balls.remove(0);

ballPanel.repaint();

}

}

});

}

private void showMe(){

Color color=new Color(255, 255, 255);

this.setTitle("图形界面及多线程:小球碰撞(鼠标右击增加,左击减少)");

this.setSize(500, 500);

ballPanel.setBackground(color);

ballPanel.add(Jshow);

ballPanel.setLayout(null);

Jshow.setBounds(340, 450, 200, 20);

Toolkit toolkit = Toolkit.getDefaultToolkit();

double width = toolkit.getScreenSize().getWidth();

double height = toolkit.getScreenSize().getHeight();

this.setLocation((int)(width-this.getWidth())/2,(int)(height-this .getHeight())/2);

this.setResizable(false);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

}

//主函数类

public class BallMain {

public static void main(String[] args) {

new BallFrame();

}

}

【实验小结】

通过本次实验我掌握了Jpanel的使用方法,并通过次方法设置了简单的图形界面,绘画出简单的小球模型。通过多线程的控制,对小球的运动轨迹,运动碰撞的发生进行方法处理。通过次试验很好的掌握了简单图形界面的设计以及多线程的控制方法,为以后的图形界面程序开发打下了基础。

java实验五

实验五:循环结构与数组 一、实验目的 1.掌握一维数组的概念、定义和使用 2.掌握数组与循环结构的联合使用 二、实验内容 1、随机产生20个0到100的整数,求最大值及其下标、最小值及其下标、平均值,并显示数组的所有元素值(按每行输出5个元素)以及最大值及其下标、最小值及其下标和平均值。 【提示】 产生随机数的方法:double number=Math.random( );(number以属于[0,1)) 提示代码: public class ArrayEx1 { public static void main(String arge[]){ int maxi=0,sum=0,aver; int []number; number= new int[20]; for(int i=0;i<20;i++){ number[i]=(int)(101*Math.random()); System.out.print(number[i]+" "); //如何五个打一行! } System.out.println(); for(int i=0;i<20;i++) { sum=sum+number[i]; if(number[maxi]

实验五 Java事件处理

实验五J a v a事件处理实验目的 1.掌握Java语言中的事件处理方法 2.掌握Java语言中事件源、监视器和处理事件的接口的概念 实验内容 1.图形用户界面设计程序 在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。 分别用ArtFont类的对象做监视器和匿名内部类的对象做监视器实现。 要求实现如下功能: 当在文本框中输入文字后回车,在文本域中显示输入的文字。 当分别选择粗体和斜体复选框时,文本域中的文字分别显示粗体 和斜体样式。 当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按 确定按钮后,按钮的前景色和文本域的前景色设置为选定的颜色。 当选择字体样式下拉框中的某一字体样式时,文本域中的文字设 置为指定的字体样式。 当选择字体大小下拉框中的某一字体大小时,文本域中的文字设 置为指定的字体大小。 当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指 定的窗体外观。 图1 程序界面运行效果 package Sy; import .*; import .*; public class ArtFont extends JFrame { static ArtFont artFont; JComboBox fontType;et(year, month - 1, 1); int星期几 = 日历.get - 1; int day = 0; if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { day = 31; }

8-实验八Java多线程操作(实验报告内容)

实验八 Java多线程操作 (实验报告) 一、目的 1.掌握Java多线程操作。 二、实验内容 启动线程,线程休眠,线程同步,等待和唤醒 三、实验环境 JDK1.6+dos环境 四、实验原理 通过案例掌握多线程操作。 五、实验步骤 1、设计一个线程操作类,要求可以产生三个线程对象,并可以分 别设置三个线程的休眠时间,如下所示: 线程A,休眠10秒 线程B,休眠20秒 线程C,休眠30秒 2、生产者与消费者问题,生产者生产一台电脑,消费者马上将生 产出的电脑取走。 六、实验小结 1、class MyThread implements Runnable{

String name; int time; public MyThread(String name,int time){ https://www.doczj.com/doc/415357151.html,=name; this.time=time; } public void run(){ try{ Thread.sleep(this.time); } catch(Exception e){ } System.out.println(https://www.doczj.com/doc/415357151.html,+"线程,休眠"+this.time/1000+"秒"); } } public class Demo08{ public static void main(String args[]){ MyThread mt1=new MyThread("线程A",10000); MyThread mt2=new MyThread("线程B",20000); MyThread mt3=new MyThread("线程C",30000);

java实验报告实验六Java图形用户界面

信息工程学院 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(); setStub(null); jButton1、setText("3"); jButton1、addActionListener(new java、awt、event、

java 程序设计 实验五

C H A N G Z H O U U N I V E R S I T Y 实验报告 课程名称: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) public class PersonInf { public String yourname; public String address1;

高级java实验三

实验三:基于多线程的Socket通信 班级:计科F1202 姓名:黄浩翔学号:201216010110 实验目的:通过将Socket通信和多线程的知识结合应用,掌握基于多线程的通信设计方法。 实验内容:创建客户端Socket;创建服务器端Socket;建立基于多线程的服务器段监听和数据处理机制;Socket的启动和管理。 实验步骤: //服务端 package基于多线程Socket通信; import https://www.doczj.com/doc/415357151.html,.ServerSocket; import https://www.doczj.com/doc/415357151.html,.Socket; public class MultiServer { public static void main(String args[]) { ServerSocket server=null; int count=0; boolean listening =true; try{ try{ server =new ServerSocket(6000);

System.out.println("服务器启动:"); } catch (Exception e){ System.out.println("不能接听服务"); } while(listening){ Socket socket=server.accept(); count++; System.out.println("Accept "+count+" Client!"); Thread read = new ReadThread(socket,"[client"+count+"]"); read.start(); } server.close(); } catch (Exception e){ System.out.println("Error:" + e); } } } //多线程 package基于多线程Socket通信; import java.io.BufferedReader;

JAVA实验-图形界面设计

广州大学学生实验报告 开课学院及实验室:计算机科学与工程实验室2014年11月14日 一、实验目的 实验十图形用户界面(1) 1.了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法, 2.了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。 实验十一图形用户界面(2) 1.了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法, 2.了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。 二、实验器材 MacBook Pro一台 操作系统:OS X Yosemite

编程软件:eclipse 三、实验要求 实验十图形用户界面(1) 1. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 2. 掌握编写独立运行的窗口界面的方法。 3. 了解Java Swing 组件的使用方法。 4. 了解对话框的使用方法。 实验十一图形用户界面(2) 1. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 2. 掌握编写独立运行的窗口界面的方法。 3. 了解Java Swing 组件的使用方法。 4. 了解对话框的使用方法。 四、实验过程原始数据记录 实验十图形用户界面(1) 1. 如下图所示,用了三个文本框,第一个文本框给用户输入商品单价,第二个则是给 用户输入商品数量,第三个用于显示总金额。 代码: import class test_2_1_1 extends JFrame implements

ActionListener{ public static void main(String[] args) { ddDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { ddDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e){ quals("计算")){ if (!canCal){ showMessage("输入的数据不合法"); return; } double sum = ()) * ());

实验五Java事件处理

实验五Java事件处理 实验目的 1.掌握Java语言中的事件处理方法 2.掌握Java语言中事件源、监视器和处理事件的接口的概念 实验内容 1.图形用户界面设计程序(ArtFo nt.java) 在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。分别用ArtFont 类的对象做监视器和匿名内部类的对象做监视器实现。 要求实现如下功能: 当在文本框中输入文字后回车,在文本域中显示输入的文字。当分别选择粗体和斜体 复选框时,文本域中的文字分别显示粗体和斜体样式。 当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按确定按钮后,按钮的 前景色和文本域的前景色设置为选定的颜色。 当选择字体样式下拉框中的某一字体样式时,文本域中的文字设置为指定的字 体样式。 当选择字体大小下拉框中的某一字体大小时,文本域中的文字设置为指定的字 体大小。 当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指定的窗体外观。 图1程序界面运行效果 package Sy; import java.awt.*; import java.awt.event.*;

import javax.swing.*; public class ArtFont extends JFrame { static ArtFont artFont; JComboBox fontType;// 字体样式下拉框 JComboBox fontSize;// 字体大小下拉框 JComboBox windowStyle;// 窗体样式下拉框 JCheckBox boldBx;// 粗体按钮 JCheckBox italicBx;// 斜体按钮 JButton colorBtn;// 颜色按钮 String[] fontNames;// 字体名称 String[] fontSizes;// 字体大小 JLabel label;// 输入提示标签 JTextField inputText;// 文字输入框 JTextArea txtArea;// 文字显示区 JPanel northPanel;// 字体设置 JPanel centerPanel;// 显示效果区 JPanel southPanel;/样式设置 Font font; int boldStyle, italicStyle; int fontSizeStyle; String fontNameStyle; Color colorStyle = Color.black;// 设置字体的默认颜色为黑色 String[] style = { "默认显示效果 ", "Windows 显示效果 ", "Unix 显示效果 " }; public ArtFont() { super(”字体设置"); // 设置默认字体 boldStyle = 0; italicStyle = 0; fontSizeStyle = 10; fontNameStyle = "宋体 ";

java多线程实验报告

java多线程实验报告 篇一:西北农林科技大学java多线程实验报告 实验7 多线程 1.实验目的 (1) 掌握Java多线程的概念和实现方法 (2) 掌握Java多线程的同步问题 2.实验内容 任务一:火车售票 假设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒买一张票。打印出售票过程,注意使用synchronized确保同一张票只能卖出一次。程序运行结果见左图。 打开Eclipse Tickets.java public class Ticket extends Thread { int ticket =1000; String name =""; public void run(){ while(true){synchronized(name){ if(ticket "第" + Thread.currentThread().getName()+ "售票点卖出了第" + ticket-- + "张票"); } } } }} try{ } catch(InterruptedException e){ }

Thread.sleep(100); Test.java public class Test { } public static void main(String args[]){} Ticket t = new Ticket(); new Thread(t,"1").start(); new Thread(t,"2").start(); new Thread(t,"3").start(); new Thread(t,"4").start(); new Thread(t,"5").start(); new Thread(t,"6").start(); new Thread(t,"7").start(); new Thread(t,"8").start(); new Thread(t,"9").start(); new Thread(t,"10").start(); 任务二:银行存款 假设某家银行,它可接受顾客的汇款,每做一次汇款,便可计算出汇款的总额。现有两个顾客,每人都分3次,每次100元将钱到入。试编写一个程序,模拟实际作业。 程序如下: classCBank { private static int sum=0; public static void add(int n){ inttmp=sum; tmp=tmp+n;// 累加汇款总额 try{ Thread.sleep((int)(10000*Math.random())); //

Java基础实验报告-图形用户界面设计

南京工程学院 实验报告 课程名称 JAVA基础 实验项目名称图形用户界面设计 实验学生班级 实验学生姓名 学号 同组学生姓名 实验时间 实验地点 实验成绩评定 指导教师签字年月日

一、实验目的和要求 1.掌握Java Swing组建的使用方法,包括窗口、框架、对话框、面板、文本编辑框、按钮、组合框等多种布局方式,掌握窗口菜单和快捷菜单设计方式。 2.理解委托时间处理模型,掌握不同组件、不同事件的事件处理方法,设计出能够响应事件的Java图形用户界面。 3.熟悉在组件上绘图的方法。 二、实验题目 用表格存储并显示个人所得税税率表,给定一个月收入值,计算应缴的个人所得税。 三、实验方法与步骤(需求分析、算法设计思路、流程图等) 算法设计思路:本次实验题目为计算个人所得税,所以本人从网上找到了国家最新的税收政策,以下为截图:

因此,我设计了以下核心算法 public void actionPerformed(ActionEvent e) { if(e.getSource()==button_b) { double wage=Double.parseDouble((String)text_wage.getText()); double tax = 0; if(wage<=3500) tax=0; if(wage>3500&&wage<=5000) tax=(wage-3500)*0.03; if(wage>5000&&wage<=8000) tax=(wage-3500)*0.1-105; if(wage>8000&&wage<=12500) tax=(wage-3500)*0.2-555; if(wage>12500&&wage<=38500)

JAVA实验五

实验名称:实验5:Java 中的接口、匿名类和异常 班级:姓名:学号: 一、实验目的 熟悉Java 中的接口、匿名类和异常。 二、实验内容与结果 (说明:按实验任务分别填写任务描述、处理思路及关键技术说明、程序源码和运行结果截图,不要心得与体会。) 任务1:编写应用程序,从命令行输入两个小数参数,求它们的商。要求程序中捕获NumberformatException异常和ArithmeticException异常。 package test; import java.util.*; public class test1 { public static void main(String args[]){ try{ System.out.println(shang()); } catch(NumberFormatException e){ System.out.println(e.getMessage( )); } catch(ArithmeticException e){ System.out.println(e.getMessage( )); } } static double shang(){ Scanner reader = new Scanner(System.in); String a,b; a = reader.next(); b = reader.next(); return Double.parseDouble(a)/Double.parseD ouble(b); } } 任务2:设计一个训练场,这个训练场专门训练海豚,使它们能够跳舞dance ()和发出“呼呼”的声音cry(),要求用内部类实现。 package test; import java.util.*; public class test1 { public static void main(String args[]){ training p = new training(); System.out.println(p.p.dance()); System.out.println(p.p.cry()); } } class training{ dolphin p; training(){ p = new dolphin(); } class dolphin{ String dance(){ return"dance"; } String cry(){

Java实验五线程

实验五线程 一实验要求 1、理解进程和线程概念; 2、掌握创建、管理和控制Java线程对象的方法; 3、了解并发执行的多线程存在的各种关系 二实验内容 1、使用线程对象或Timer定时器制作数字时钟标签组件,显示当前日期和时间,每秒刷新,将该标签添加到框架窗口。 import java.awt.FlowLayout; import java.text.SimpleDateFormat;//简单日期格式类 import java.util.Locate; import java.util.Timer;//一种工具,线程用其安排以后在后台线程中执行的任务 import java.util.TimerTask; import java.swing.JLabel; public class ShizhongJFrame extends JFrame{ { Public ShizhongJFrame(){ JFrame f=new JFrame(“数字时钟”); f.setLayout(new FlowLayout()); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(200,70); final JLable lable=new JLable; final SimpleDateFormat format=new SimpleDateFormat(“H:m:s”,Locate.CHINA); f.add(lable); Timer time=new Timer(); time.scheduleAtFixedRate(new TimerTask(){ Public void run(){ Label.setText(format.format(new Date(System.currentTimeMillis()))); } },0,1000); f.setVisible(true); } Public staic void main(String arg[]){ New ShizhogJFrame(); } } 三实验内容中遇到的问题、解决方法和体会。

Java图形用户界面实验报告

西安邮电大学 (计算机学院) 课内实验报告 实验名称:图形用户界面 专业名称:计算机科学与技术 班级:计科1405班 学生姓名:高宏伟 学号:04141152 指导教师:刘霞林 实验日期:2016.11.24

一、实验目的 了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。 二、实验要求 1. 掌握使用布局管理器对组件进行管理的方法。 2. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 3. 掌握编写独立运行的窗口界面的方法。 4. 掌握组件的使用方法。 5. 了解对话框的使用方法。 三、实验内容 (一)算术测试。 ?实验要求: 编写一个算术测试小软件,用来训练小学生的算术能力。程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确; ComputerFrame类对象负责为算术题目提供视图,比如用户可以通过ComputerFrame 类对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案;MainClass是 软件的主类。 ?程序模板: Teacher.java public class Teacher { int numberOne,numberTwo; String operator=""; boolean right; public int giveNumberOne(int n) { numberOne=(int)(Math.random()*n)+1; return numberOne; } public int giveNumberT wo(int n) { numberTwo=(int)(Math.random()*n)+1; return numberTwo; } public String giveOperator() { double d=Math.random();

Java多线程实验报告

实验报告 课程名称: Java语言程序设计 姓名: 学号: 班级: 数学与计算机科学学院

数学与计算机科学学院实验报告实验名称:多线程 指导教师:日期:

if (isPrime) count++; } System.out.println(st + "~" + en + "之间共有" + count + "个质数"); } public static void main(String[] args) { UseThread thread1 = new UseThread(2, 1000); UseThread thread2 = new UseThread(1000, 2000); thread1.start(); thread2.start(); } } 第2题代码: public class Experiment14_2 { public static void main(String[] args) { MyThread t1 = new MyThread("T1"); MyThread t2 = new MyThread("T2"); t1.start(); t2.start(); System.out.println("活动线程数:" + Thread.activeCount()); System.out.println("main()运行完毕"); } } class MyThread extends Thread { public MyThread(String s) { super(s); } public void run() { for (int i = 1; i <= 3; i++) { System.out.println(getName() + "第" + i + "次运行"); try { sleep((int) (Math.random() * 100)); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(getName() + "结束"); } }

实验五java项目开发实例

实验五Java项目开发实例 实验目的: 掌握运用RAD开发Java应用程序 目标要求: 1.掌握运用Visual Editor创建窗口应用程序 2.掌握通过JDBC连接数据库 内容简介: 本章将介绍MyLibrary的 GUI应用程序。 实验说明: 第一节创建GUI应用程序 1.添加JDBC环境变量 在菜单栏点击“文件 -> 新建 -> 项目”,选择“Java项目”,点击“下一步”。 输入项目名称“MyLibraryGUI”,点击“下一步”。 在Java设置中选择“库”栏,点击“添加变量”。在“新建变量类路径条目”对话框

中点击“配置变量” 在“类途径变量”对话框中点击“新建”按钮,会弹出“新建变量条目”对话框。在“名称”栏中输入“CLOUDSCAPE_DRIVER_JAR”,然后点击“文件”按钮,找到D:/Program Files/IBM/Rational/SDP/runtimes/base_v6/cloudscape/lib/,如下图: 点击“确定”。再次点击“确定”。在弹出对话框点击“是”。 在“新建变量类路径条目”窗口中选择 ,点击“确定”。

这样就在MyLibraryGUI项目里添加了Cloudscape 的JDBC驱动。点击“完成”按钮。 2.新建可视类(Visual Class) 在菜单栏选择“文件 -> 新建 -> 其它 -> Java -> 可视类”,点击“下一步”。 在“Java类”窗口,“包”文本框输入,“名称”文本框输入“MyLibraryDesktopApp”,“样式”选择“Swing -> 框架”(选择后“超类”变成),点击“接口”右侧的“添加”,输入ActionListener,点击“确定”。勾选“pulibc static void main(String[] args)”,点击“完成”

实验6:多线程实验 (1)

成绩: 面向对象原理与Java实践课程实验报告 实验6:多线程实验 姓名林浩强 班级网络14-2 学号 14034460220 实验地点软件实验室 实验时间 2016.6.7 指导教师姚明

一、实验目的: ●了解线程调度机制 ●理解线程同步机制 ●掌握线程设计方法 二、实验要求: ●掌握线程创建的方法 ●掌握线程的基本控制方法 ●掌握线程间的同步控制方法 三、实验内容: 1、随机生成1万个整数,利用线程技术计算两种不同排序算法对这些数排序的运行时间。 2、有一水塘,可实现注水和排水操作。当水塘无水时不能对其再进行排水操作,当水塘水满时不能对其再进行注水操作。创建水塘类Pond、注水线程Injection和排水线程Drain,假设注水线程可以在10分钟内将水塘注满水,排水线程可以在10分钟内将水塘的水全排出。试实现水塘的注水和排水过程。 四、设计思路: 首先,第一个实验的需求是随机生成10000个整数并且按两种算法排序,并利用线程的方式计算排序时间。我用的排序算法是冒泡排序和选择排序法,在排序的前后分别用System 类的CurrentTimeMillis()方法获取当前时间的毫秒值,作差求出排序所用的时间。最后在SortDemo类中启动线程即可。、 第二个实验的需求是实现注水和排水的操作,题目中指出“当水塘无水时不能对其再进行排水操作,当水塘水满时不能对其再进行注水操作”,所以我采用了线程的等待唤醒机制来实现。首先在Pond类中声明一个标记变量flag,把注水和排水的操作封装成为功能并加了同步关键字synchronize,方法中运用了同步唤醒机制实现依次的一次一个输出。然后在Injection类和Drain类中调用同步方法即可。最后,在PondDemo中启动线程即可。 五、程序源代码: 实验题目1: package java6_Test; import java.util.Random; public class Sort1 extends Thread { private Object obj = new Object(); //重写run方法 public void run() { //计时开始 long l1 = System.currentTimeMillis(); //用Object类对象设置同步锁 synchronized (obj) { //随机生成10000个数并用相应长度数组来储存这些数

Java实验五

实验五继承、抽象类和接口 学号 6 姓名刘顺专业网络工程成绩 【实验目的与要求】 1、掌握Java中类的继承、变量继承、方法继承的思想和使用; 2、理解和掌握java中多态性的覆写和重载的区别和用法; 3、掌握抽象和接口的工作机制和用法; 4、实验后及时总结、归纳、分析,并完成实验报告。 【实验内容与要求】 1、继承和覆盖的使用 (1)编写Employee雇员类,在该类中定义了3个域:name表示员工姓名,salary表示员工的工资,work表示工作:“编写程序”,并分别为它们定义了set和get方法。 (2)编写Manager经理类,该类继承自Employee雇员类。在该类中,定义了一个bonus域,表示经理的奖金,重写work方法:“管理项目”。 (3)在主类中,创建Employee雇员和Manager经理对象,并为其赋值,输出其信息。 2、抽象类的定义和使用 (1)定义抽象类Aniaml动物抽象类,通过构造方法得到动物名字并输出;定义抽象方法shout()表示叫声;定义抽象方法eat()表示吃食。 (2)定义Cat类继承自Animal类,调用父类的构造方法输出猫的名字信息。实现抽象方法shout(“猫叫:喵喵喵!”) ;实现抽象方法eat(“猫喜欢吃:鱼”)。 (3)定义Dog类继承自Animal类,调用父类的构造方法输出狗的名字信息。实现抽象方法shout(“狗叫:汪汪汪!”) ;实现抽象方法eat(“狗喜欢吃:骨头”)。 (4)在主方法中,实例化“小猫”和“小狗”,并向上转型赋给Aniaml类变量Animal ani =new Cat("小猫"); 分别调用ani的shout()和eat()方法。 3、接口的定义和使用 (1)定义一个USB接口标准,定义2个抽象方法:USB设备信息显示show();USB设备开始工作start();USB 设备停止工作stop(); (2)定义U盘子类,class Flash implements USB实现USB接口标准,实现方法:USB接入产品信息show (“USB设备已经接入”);设备启动信息start(“USB设备已经启动”);设备停止动作信息stop(“USB设备已经停止”); (2)定义打印机子类,class Print implements USB实现USB接口标准,实现方法:打印机接入产品信息show

相关主题
文本预览
相关文档 最新文档