java语言实验报告,Java语言 实验报告(二)
實驗報告(二)
實驗目的
熟悉 Java 圖形界面的基本設計。
熟悉 Java 界面的菜單使用方法。
熟悉 Java 的多線程應用程序開發(fā)方法。
實驗任務 1
編寫 Java 應用程序,實現(xiàn)以下登陸界面(需注意密碼框輸入的內容不顯示明文)
實驗源代碼
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);
//添加監(jiān)聽器,點擊右上角的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 應用程序,實現(xiàn)以下界面:
實驗源代碼
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);
//添加監(jiān)聽器,點擊右上角的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 張票。具體要求如下:
票數(shù)要使用同一個靜態(tài)值;
為保證不會出現(xiàn)賣出同一個票數(shù),要 java 多線程同步鎖。
設計思路:
創(chuàng)建一個站臺類 Station,繼承 Thread,重寫 run 方法,在 run 方法里面執(zhí)行售票操作。
售票要使用同步鎖:即有一個站臺賣這張票時,其他站臺要等這張票賣完。
創(chuàng)建主方法調用類。
運行效果參考下圖:
實驗源代碼
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
總結
以上是生活随笔為你收集整理的java语言实验报告,Java语言 实验报告(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java编译不了testpad,java
- 下一篇: java美元兑换,(Java实现) 美元