Java的一次GUI考试

本文介绍了Java的一次GUI考试,涵盖了考试的要求和代码实现,主要关注GUI界面及其功能逻辑。

一次考试_AI人工智能

1. 要求

在这里插入图片描述
在这里插入图片描述

2.Code

GUI:

package com.xs.RAGUI.ZZP;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.*;

public class test {
	private JFrame mainFrame = new JFrame("人工智能?");
	//	定义一个复选框
	private JCheckBox changeEngMark = new JCheckBox("替换英文标点");
	// 定义一个JList对象
	private JList bookList;
	// 定义一个DefaultListModel对象
	private DefaultListModel bookModel = new DefaultListModel();
	private JTextField askTest = new JTextField(20);
	private JButton clearBn = new JButton("清空列表");
	private JButton addBn = new JButton("询问");
	private ArrayList<String> arrStr = new ArrayList<String>();
	public test() {
		init();
	}

	private void init() {
		arrStr.add("我:我会写Java吗?" );
		arrStr.add("AI :你会写Java!");
		
		// 向bookModel中添加元素
		bookModel.addElement("我:我会写Java吗? ");
		bookModel.addElement("AI :这你得问詹姆斯·高斯林老师!");
		// 根据DefaultListModel对象创建一个JList对象
		bookList = new JList(bookModel);
		// 设置最大可视高度
		bookList.setVisibleRowCount(4);
		// 只能单选
		bookList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

		// 为问题添加按钮添加事件监听器
		addBn.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				// 当bookName文本框的内容不为空。
				if (!askTest.getText().trim().equals("")) {
					// 向bookModel中添加一个元素,系统自动会向JList中添加对应的列表项
					arrStr.add("我:"+askTest.getText());
					arrStr.add("AI :"+StrOperation.PassMeMeda(askTest.getText()));
					bookModel.addElement("我:"+askTest.getText());
					bookModel.addElement("AI :"+StrOperation.PassMeMeda(askTest.getText()));
					askTest.setText(null);
				}else {
					JOptionPane.showMessageDialog(mainFrame, "你不说话我怎么回答.");
				}
			}
		});
		
			
		
		changeEngMark.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (changeEngMark.isSelected()) {
					askTest.setText(null);
					bookModel.clear();
					for (String str : arrStr) {
						str = StrOperation.ToSBC(str);
						bookModel.addElement(str);
					}
				}else {
					askTest.setText(null);
					bookModel.clear();
					for (String str : arrStr) {
						str = StrOperation.ToDBC(str);
						bookModel.addElement(str);
					}
				}
			}
		});
		
		// 为清空按钮添加事件监听器
		clearBn.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				// 如果不为空
				if (bookModel.size() > 0 ) {
					bookModel.clear();
					arrStr.clear();
				}else {
					JOptionPane.showMessageDialog(mainFrame, "已经很干净了老铁!");
				}
			}
		});

		JPanel p = new JPanel();
		
		p.add(askTest);
		p.add(addBn);
		p.add(clearBn);
		// 添加bookList组件
		mainFrame.setLocation(200, 300);
		mainFrame.add(changeEngMark,BorderLayout.NORTH);
		mainFrame.add(new JScrollPane(bookList));
		// 将p面板添加到窗口中
		mainFrame.add(p, BorderLayout.SOUTH);

		mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainFrame.pack();
	}

	public void showFrame() {
		mainFrame.setVisible(true);
	}

	public static void main(String[] args) {
		new test().showFrame();
	}
}

功能逻辑:

StrOperation

package com.xs.RAGUI.ZZP;

public class StrOperation {
	static public  String Ma = "吗么嘛";
	public Boolean isEng(String str){
		return null;
	}
	
	
	static public String ToSBC(String input)
	{ //半角转全角:
	    char[] c=input.toCharArray();
	    for (int i = 0; i < c.length; i++){
	    	if (c[i]==32){
	    	   c[i]=(char)12288; continue;
	    	}
	    	if (c[i]<127) c[i]=(char)(c[i]+65248);
	   }
	      return new String(c);
	}
	
	static public String ToDBC(String input)
	{
		char[] c=input.toCharArray();
		for (int i = 0; i < c.length; i++)
		{
			
			if (c[i]==12288)
			{
				c[i]= (char)32; continue;
			}
			if (c[i]>65280 && c[i]<65375)
				c[i]=(char)(c[i]-65248);
		}
		return new String(c);
	}
	
	static public String PassMeMeda(String str) // 去掉 吗 么 嘛 及其其他
	{
		String ans = "";

		for(int i = 0 ;i< str.length() ;i++) {
			
			boolean isMa = false;
			for(int j =0 ;j<3 ;j++) {
				if(str.substring(i, i+1).equals(Ma.substring(j, j+1))) {
					isMa = true;
					break;
				}
			}
			if(!isMa) {
				if (str.substring(i, i+1).equals("我")) {
					ans = ans + "你";
				}else if(str.substring(i, i+1).equals("你")) {
					ans = ans + "我";
				}else if(str.substring(i, i+1).equals("?")){
					ans = ans + "!";
				}else if(str.substring(i, i+1).equals("?")){
					ans = ans + "!";
				}
				else
				{
					ans = ans + str.substring(i, i+1);
				}
			}
		}
		return ans;
	}
	
	public static void main(String[] args) {
		String ab =StrOperation.PassMeMeda("你会说英语吗?");
		System.out.println(ab);
	}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值