南邮java大作业实验报告_南京邮电大学java第四次实验报告

实 验 报 告

( 2017 / 2018学年 第2学期)

课程名称

JAVA语言程序设计

实验名称

Java集成开发环境的安装与使用、

Java变量、表达式与控制结构

实验时间

2018

6

7

指导单位

计算机学院软件教学中心

指导教师

许棣华

学生姓名

王利国

班级学号

B160209

学院(系)

电子与光学工程学院,微电子学院

专    业

微电子科学与工程

实验名称

方法、数组和类

指导教师

许棣华

实验类型

上机

实验学时

2

实验时间

2017.6.7

一、    实验目的

1. 了解和掌握Java中GUI组件和界面化设计

2. 掌握Java中创建线程对象的方法

3. 熟悉控制线程状态的过程

二、实验环境(实验设备)

1. 每位学生配备计算机一台

2. 计算机需安装好JDK和Jcreator

三、实验内容

1. 编写一个Applet,利用两个文本框对象input1和input2,接收用户从键盘输入的两个整型数。当用户单击“计算”按钮时,可进行算术计算,并输出运算结果;运算结果放在多行文本域JTextArea组件中。GUI界面参考教材198页9.6题。

package swing;

import javax.swing.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

/**

* @Author liguo

* @Description

* @Data 2018-06-04 20:06

*/

public class Test {

public static void main(String[] args) {

// 创建 JFrame 实例

JFrame frame = new JFrame( "四则运算" );

frame.setSize( 350, 300 );

frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

/* 创建面板,这个类似于 HTML 的 div 标签

* 我们可以创建多个面板并在 JFrame 中指定位置

* 面板中我们可以添加文本字段,按钮及其他组件。

*/

JPanel panel = new JPanel();

//添加面板

frame.add( panel );

/*

* 调用用户定义的方法并添加组件到面板

*/

placeComponents( panel );

// 设置界面可见

frame.setVisible( true );

}

private static void placeComponents(JPanel panel) {

panel.setLayout( null );

// 创建 JLabel

JLabel firstLabel = new JLabel( "第一个数为" );

/* 这个方法定义了组件的位置。

* setBounds(x, y, width, height)

* x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。

*/

firstLabel.setBounds( 10, 20, 80, 25 );

panel.add( firstLabel );

//field

JTextField firstNumber = new JTextField( 20 );

firstNumber.setBounds( 100, 20, 165, 25 );

panel.add( firstNumber );

// 输入的文本域

JLabel secondlabe2 = new JLabel( "第二个数字" );

secondlabe2.setBounds( 10, 50, 80, 25 );

panel.add( secondlabe2 );

/**

* 第二个数字的输入

*/

JTextField secondNumber = new JTextField( 20 );

secondNumber.setBounds( 100, 50, 165, 25 );

panel.add( secondNumber );

// 创建计算按钮

JButton loginButton = new JButton( "计算" );

loginButton.setBounds( 10, 80, 80, 25 );

panel.add( loginButton );

//添加页面输出

JTextArea area = new JTextArea();

area.setBounds( 100, 110, 165, 100 );

panel.add( area );

loginButton.addActionListener( new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

int a = Integer.parseInt( firstNumber.getText() );

int b = Integer.parseInt( secondNumber.getText() );

String str = "和为" + (a + b) +

"\n差为" + (a - b) +

"\n积为" + (a * b) +

"\n商为" + (a / b);

area.append( str );

}

} );

}

}

2. 编写一个应用程序,设计4个按钮,分别命名为“加”、“减”、“乘”、“除”,有3个文本框。单击相应的按钮,将两个文本框的数字做运算,在第三个文本框中显示结果。

package swing;

/**

* @Author liguo

* @Description 设计4个按钮,分别命名为“加”、“减”、“乘”、“除”,另外,窗口中还有3个文本框。

* 单击相应的按钮,将两个文本框的数字做运算,在第三个文本框中显示结果。要求处理NumberFormatException异常。

* @Data 2018-06-29 20:34

*/

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JTextField;

public class Caculate extends JFrame implements ActionListener {

JButton jia;

JButton jian;

JButton cheng;

JButton chu;

JTextField one;

JTextField two;

JTextField three;

JLabel label;

public Caculate() {

init();

setVisible(true);

setResizable(true);

validate();

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

}

public void init() {

setLayout(new FlowLayout());

setSize(300, 320);

setTitle("计算");

jia = new JButton("加");

jian = new JButton("减");

cheng = new JButton("乘");

chu = new JButton("除");

one = new JTextField(10);

two = new JTextField(10);

three = new JTextField(10);

label = new JLabel(" ", JLabel.CENTER);

label.setBackground(Color.green);

add(one);

add(label);

add(two);

add(three);

add(jia);

add(jian);

add(cheng);

add(chu);

jia.addActionListener(this);

jian.addActionListener(this);

cheng.addActionListener(this);

chu.addActionListener(this);

}

@Override

public void actionPerformed(ActionEvent e) {

double n;

if (e.getSource() == jia) {

double n1, n2;

try {

n1 = Double.parseDouble(one.getText());

n2 = Double.parseDouble(two.getText());

n = n1 + n2;

three.setText(String.valueOf(n));

label.setText("+");

} catch (NumberFormatException ee) {

three.setText("请输入数字字符");

}

} else if (e.getSource() == jian) {

double n1, n2;

try {

n1 = Double.parseDouble(one.getText());

n2 = Double.parseDouble(two.getText());

n = n1 - n2;

three.setText(String.valueOf(n));

label.setText("-");

} catch (NumberFormatException ee) {

three.setText("请输入数字字符");

}

} else if (e.getSource() == cheng) {

double n1, n2;

try {

n1 = Double.parseDouble(one.getText());

n2 = Double.parseDouble(two.getText());

n = n1 * n2;

three.setText(String.valueOf(n));

label.setText("*");

} catch (NumberFormatException ee) {

three.setText("请输入数字字符");

}

} else if (e.getSource() == chu) {

double n1, n2;

try {

n1 = Double.parseDouble(one.getText());

n2 = Double.parseDouble(two.getText());

n = n1 / n2;

three.setText(String.valueOf(n));

label.setText("/");

} catch (NumberFormatException ee) {

three.setText("请输入数字字符");

}

}

validate();

}

public static void main(String[] args) {

Caculate test = new Caculate();

}

}

//那个用JFormDesigner插件是好写 ,就是生成的代码量太多了,现在这个是重写的;

3. 编写一个有两个线程的程序,第一个线程用来计算2~100000之间的质数及个数,第二个线程用来计算100000~200000之间的质数及个数。

package swing;

/**

* @Author liguo

* @Description

* @Data 2018-06-07 9:26

*/

public class Thread extends java.lang.Thread {

public static void run(int min, int max) {

int i, j;

for (i = min; i <= max; i++) {

for (j = 2; j < (int) Math.sqrt( i ); j++) {

if (i % j == 0)

break;

else

System.out.print( i );

count++;

}

System.out.println( min + " " + max + ":" + count );

}

}

private int min, max;

private static int count = 0;

public static void main(String[] args) {

Thread t1 = new Thread();

Thread t2 = new Thread();

t1.run( 2, 100000 );

t2.run( 100000, 20000 );

}

}

四、实验小结(包括问题和解决方法、心得体会等)

1:此次实验加深了自己对于swing的使用,尤其是几种布局的格式,以及控件按钮方法的书写。学会了通过插件JFormDesigner来写Swing界面做类似计算器的东西。

2:学习了用线程来写控制程序。

五、指导教师评语

成  绩

批阅人

日  期

南京邮电大学java第三次实验报告

实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 4 月 ...

南京邮电大学java第一次实验报告

实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 4 月 ...

南京邮电大学java第二次实验报告

实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 4 月 ...

java第四次实验报告

课程:Java程序与设计     班级:1352 姓 名:池彬宁  小组成员: 20135212池彬宁 20135208贺邦 学号:20135212 成绩:             指导教师:娄嘉鹏  ...

南京邮电大学java程序设计作业在线编程第四次作业

王利国的的 "Java语言程序设计第4次作业(2018)" 详细 主页 我的作业列表 作业结果详细 总分:100 选择题得分:40  1.下列方法定义中,正确的是() A.doub ...

南京邮电大学java程序设计作业在线编程第五次作业

王利国的"Java语言程序设计第5次作业(2018)"详细 主页 我的作业列表 作业结果详细 总分:100 选择题得分:50  1. 以下哪一个工具是Java的编译器?( ) A. ...

南京邮电大学java程序设计作业在线编程第三次作业

王利国的"Java语言程序设计第3次作业(2018)"详细 作业结果详细 总分:100 选择题得分:60  1. 设有如下定义语句: String s1="My cat& ...

南京邮电大学java程序设计作业在线编程第二次作业

王利国的"Java语言程序设计第2次作业(2018)"详细 作业结果详细 总分:100 选择题得分:60  1. 表达式9==8&&3<7的运算结果是( ) ...

南京邮电大学java程序设计作业在线编程第一次作业

王利国的"Java语言程序设计第1次作业(2018)"详细 作业结果详细 总分:100 选择题得分:40  1. Java语言中,基本数据类型一共有( )种. A.16 B.2 C ...

随机推荐

Directory.GetCurrentDirectory和Application.StartupPath的区别

System.IO.Directory.GetCurrentDirectory()方法用于获得应用程序当前工作目录.System.Windows.Forms.Application.StartupPa ...

0环境设置 - AUTOTRACE设置

Autotrace是sqlplus的一个工具,用来显示所执行查询的查询计划 设置步骤 • cd [ORACLE_HOME]/rdbms/admin• log into SQL*Plus as SYST ...

C# lazy加载

转自http://www.cnblogs.com/yunfeifei/p/3907726.html 在.NET4.0中,可以使用Lazy 来实现对象的延迟初始化,从而优化系统的性能. ...

spring boot 实践

二.实践 一些说明: 项目IDE采用Intellij(主要原因在于Intellij颜值完爆Eclipse,谁叫这是一个看脸的时代) 工程依赖管理采用个人比较熟悉的Maven(事实上SpringBoot ...

Tair是一个高性能,分布式,可扩展,高可靠的key/value结构存储系统(转)

Tair是一个高性能,分布式,可扩展,高可靠的key/value结构存储系统! Tair专为小文件优化,并提供简单易用的接口(类似Map)Tair支持Java和C版本的客户端 Tair is a di ...

c++设计模式-----抽象工厂模式

抽象工厂模式 要创建一组相关或者相互依赖的对象 作用:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. UML类图 抽象基类: 1)AbstractProductA.Abstrac ...

Aleta病毒

文件一定要及时备份!!! 文件一定要及时备份!!! 文件一定要及时备份!!! 文件一定要及时备份!!! 文件一定要及时备份!!! 文件一定要及时备份!!! 文件一定要及时备份!!! 文件一定要及时备份 ...

nginx+uwsgi+flask 服务器配置

注:每个机器,软件版本可能不一样,虽然网上有很多类似的帖子,但是我在搭建的时候遇到了不少的坑,此文仅供参考. 请求流程: 1.安装uwsgi uwsgi是一个应用服务器,非静态文件的网络请求就必须通过 ...

iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD

原文出处: 容芳志的博客 简介iOS有三种多线程编程的技术,分别是:(一)NSThread(二)Cocoa NSOperation(三)GCD(全称:Grand Central Dispatch) 这 ...

你可能感兴趣的:(南邮java大作业实验报告)