JAVA语言实验 :实验 ( 一 )
JAVA语言实验 :实验 ( 二 )
JAVA语言实验 :实验 ( 三 )
一、实验目的
(1)熟悉 Java 图形界面的基本设计。
(2)熟悉 Java 界面的菜单使用方法。
(3)熟悉 Java 的多线程应用程序开发方法。
二、实验任务
实验务 任务 1
编写 Java 应用程序,实现以下登陆界面(需注意密码框输入的内容不显示明文):
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* @imb.zz
* @creat2022
*/
public class main {
public static void main(String[] args) {
//创建窗口
JFrame meun = new JFrame("Meun");
//窗口位置
meun.setLocation(300,300);
//窗口大小
meun.setSize(1000,600);
//插入横框
JMenuBar MenuBar = new JMenuBar();
//插入一级菜单
meun.setJMenuBar(MenuBar);
JMenu meun_file = new JMenu("File");
JMenu meun_format = new JMenu("Format");
JMenu meun_help = new JMenu("Help");
MenuBar.add(meun_file);
MenuBar.add(meun_format);
MenuBar.add(meun_help);
//一级框大小
MenuBar.setSize(100,1000);
meun_file.setFont(new Font("正楷",Font.BOLD, 44));
meun_format.setFont(new Font("正楷",Font.BOLD, 44));
meun_help.setFont(new Font("正楷",Font.BOLD, 44));
//插入二级列框
JMenu meun_file_Chinese = new JMenu("中文");
JMenu meun_file_Base = new JMenu("进制");
meun_format.add(meun_file_Chinese);
meun_format.add(meun_file_Base);
//二级框字体大小
meun_file_Chinese.setFont(new Font("正楷",Font.BOLD, 30));
meun_file_Base.setFont(new Font("正楷",Font.BOLD, 30));
//插入三级列框
JMenuItem binary = new JMenuItem("二进制");
JMenuItem Octal = new JMenuItem("八进制");
JMenuItem hexadecimal = new JMenuItem("十六进制");
meun_file_Base.add(binary);
meun_file_Base.add(Octal);
meun_file_Base.add(hexadecimal);
//三级框大小
binary.setFont(new Font("正楷",Font.BOLD, 30));
Octal.setFont(new Font("正楷",Font.BOLD, 30));
hexadecimal.setFont(new Font("正楷",Font.BOLD, 30));
//结束
meun.setVisible(true);
}
}
实验务 任务 2
编写 Java 应用程序,实现以下界面:
public class Main {
public static void main(String[] args) {
Window win=new Window();
win.setBounds(400, 200, 310, 260);
win.setTitle("登录");
}
}
public class Window extends JFrame{
JTextField text;
JButton button;
JPasswordField password;
public Window() {
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init() {
setLayout(null);
//用户名块
JLabel jl1=new JLabel("用户名:");
jl1.setBounds(30,50,100,30);
add(jl1);
//用户名块输入块
text=new JTextField(10);
text.setBounds(80, 50, 150, 30);
add(text);
password=new JPasswordField(10);
//密码块输入
JLabel jl2=new JLabel("密码:");
jl2.setBounds(42,100,100,30);
add(jl2);
//密码框大小
password.setBounds(80, 100, 150, 30);
add(password);
//确定按键插入
button=new JButton("确定");
button.setBounds(115,150,70,30);
add(button);
}
}
实验任务 3
编写一个 Java 多线程应用程序,完成三个售票窗口同时出售 20 张票。具体要求如下:
• 票数要使用同一个静态值;
• 为保证不会出现卖出同一个票数,要 java 多线程同步锁。
public class trick {
//总票数
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 (trick.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();
}
}
}