ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java语言 实验报告(二)

2021-02-10 16:58:43  阅读:262  来源: 互联网

标签:Java 语言 frame void WindowEvent Override new 实验报告 public


实验报告(二)

实验目的

  • 熟悉 Java 图形界面的基本设计。
  • 熟悉 Java 界面的菜单使用方法。
  • 熟悉 Java 的多线程应用程序开发方法。

实验任务 1

编写 Java 应用程序,实现以下登陆界面(需注意密码框输入的内容不显示明文)

在这里插入图片描述

实验源代码

package com.science.sc2.No1;

import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class Main {
    public static void main(String[] args) {
        Frame frame = new Frame("登陆");
        frame.setSize(400,300);
        frame.setVisible(true);
        //添加监听器,点击右上角的X后关闭按钮
        frame.addWindowListener(new WindowListener() {
            @Override
            public void windowOpened(WindowEvent e) {

            }

            @Override
            public void windowClosing(WindowEvent e) {
                frame.dispose();
            }

            @Override
            public void windowClosed(WindowEvent e) {

            }

            @Override
            public void windowIconified(WindowEvent e) {

            }

            @Override
            public void windowDeiconified(WindowEvent e) {

            }

            @Override
            public void windowActivated(WindowEvent e) {

            }

            @Override
            public void windowDeactivated(WindowEvent e) {

            }
        });
        frame.setLayout(null);
        Label l1 = new Label("用户名:");
        Label l2 = new Label("密 码:");
        TextField username = new TextField(30);
        TextField password = new TextField(30);
        Button btn = new Button("确定");
        frame.add(l1);
        frame.add(l2);
        frame.add(username);
        frame.add(password);
        frame.add(btn);
        l1.setBounds(50,80,60,20);
        username.setBounds(110,80,200,20);
        l2.setBounds(50,120,60,20);
        password.setBounds(110,120,200,20);
        btn.setBounds(160,160,80,40);
        password.setEchoChar('*');  //设置回显字符
        frame.setLocationRelativeTo(null);   //默认显示在正中间
    }
}

实验运行截图

在这里插入图片描述

实验任务2

编写 Java 应用程序,实现以下界面:

在这里插入图片描述

实验源代码

package com.science.sc2.No2;

import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class Main {
    public static void main(String[] args) {
        Frame frame = new Frame("Menu");
        frame.setSize(400,300);
        frame.setVisible(true);
        //添加监听器,点击右上角的X后关闭按钮
        frame.addWindowListener(new WindowListener() {
            @Override
            public void windowOpened(WindowEvent e) {

            }

            @Override
            public void windowClosing(WindowEvent e) {
                frame.dispose();
            }

            @Override
            public void windowClosed(WindowEvent e) {

            }

            @Override
            public void windowIconified(WindowEvent e) {

            }

            @Override
            public void windowDeiconified(WindowEvent e) {

            }

            @Override
            public void windowActivated(WindowEvent e) {

            }

            @Override
            public void windowDeactivated(WindowEvent e) {

            }
        });
        frame.setLayout(null);
        frame.setLocationRelativeTo(null);   //默认显示在正中间
        MenuBar menuBar = new MenuBar();
        frame.setMenuBar(menuBar);
        Menu menu1 = new Menu("File");
        Menu menu2 = new Menu("Format");
        Menu menu3 = new Menu("Help");
        menuBar.add(menu1);
        menuBar.add(menu2);
        menuBar.add(menu3);
        Menu menu22 = new Menu("进制");
        menu2.add(new MenuItem("中文"));
        menu2.add(menu22);
        menu22.add(new CheckboxMenuItem("二进制"));
        menu22.add(new CheckboxMenuItem("八进制"));
        menu22.add(new CheckboxMenuItem("十进制"));
    }
}

实验运行截图

在这里插入图片描述

实验任务 3

编写一个 Java 多线程应用程序,完成三个售票窗口同时出售 20 张票。具体要求如下:

  • 票数要使用同一个静态值;
  • 为保证不会出现卖出同一个票数,要 java 多线程同步锁。
  • 设计思路:
    • 创建一个站台类 Station,继承 Thread,重写 run 方法,在 run 方法里面执行售票操作。
    • 售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖完。
    • 创建主方法调用类。

运行效果参考下图:

在这里插入图片描述

实验源代码

package com.science.sc2.No3;

public class Main {
    public static final int DEFAULT_TICKET = 20;
    public static final int DEFAULT_STATION = 3;
    public static int ticket = 1;
    public static int station = DEFAULT_STATION;



    public static class Station extends Thread{
        @Override
        public void run() {
            while(true){
                synchronized (Main.class){
                    if(ticket <= DEFAULT_TICKET){
                        System.out.println(this.getName() + "卖出了第" + (ticket++) + "张票");
                        if(ticket > DEFAULT_TICKET){
                            System.out.println("票卖完了!");
                        }
                    }else{
                        break;
                    }

                }
                try {
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

        }

        public Station(String name) {
            super(name);
        }
    }

    public static void main(String[] args) {
        for (int i = 1; i <= station; i++) {
            new Station("窗口" + i).start();
        }

    }
}

实验运行截图

在这里插入图片描述

标签:Java,语言,frame,void,WindowEvent,Override,new,实验报告,public
来源: https://blog.csdn.net/qq_45740349/article/details/113783660

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有