zoukankan      html  css  js  c++  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) +
                                "
    差为" + (a - b) +
                                "
    积为" + (a * b) +
                                "
    商为" + (a / b);
                    area.append( str );
                }
            } );
    
    
        }
    }
    View Code

    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();
        }
    }
    View Code

    //那个用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 );
        }
    }
    View Code

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

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

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

    五、指导教师评语

    成  绩

    批阅人

    日  期

                                

  • 相关阅读:
    关于SOA和AOP
    网络通信
    网络层ddos与应用层ddos区别
    python 模块发布及使用
    安全等级划分依据与应急响应流程
    ssl与ssh
    列表计数及插入
    博客首语
    聊聊当今市面上的国产耳机
    “互联网+”背景下使用微信公众号增强班主任工作与整合教学资源(泰微课)
  • 原文地址:https://www.cnblogs.com/liguo-wang/p/9152591.html
Copyright © 2011-2022 走看看