最近用java模拟“会说话的汤姆猫”做了一个超级简陋的小程序。重点研究了一下JFrame(javax.swing.JFram)、SequentialGroup(javax.swing.GroupLayout.SequentialGroup)、ParallelGroup(javax.swing.GroupLayout. ParallelGroup)、Canvas(java.awt.Canvas)、Graphics(java.awt.Graphics)的使用。
程序效果如下: 欢迎大家下载这个小程序的可运行jar包!趣味聊天demo.jar
可以在问题框中输入任意问题与小猫对话。当输入问题时,小猫会做出聆听状态。
点击发送后,小猫做回答状态。对于各种问题的答案,这里调用的是欧拉蜜智能语音api,详情可参考http://cn.olami.ai
主要代码如下:
1、界面MyJFrame:
import java.awt.Canvas;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.net.URL;
import javax.swing.GroupLayout.Alignment;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import com.alibaba.fastjson.JSONObject;
public class MyJFrame extends javax.swing.JFrame {
private static final long serialVersionUID = 1L;
private NLIProcess nlp = new NLIProcess();
private JButton jButton_send;
private JLabel jLabel1;
private JLabel jLabel2;
private JPanel jPanel1;
private JPanel jPanel2;
private JTextField jTextField1;
private JTextField jTextField2;
private Image act1;
private Image act2;
// 初始图像编号
int actPhase = 1;
Canvas c = null;
public MyJFrame() {
getImage();
initComponents();
}
private void getImage(){
setBackground(Color.BLACK);
URL imageUrl = getClass().getResource("image/img0.png");
act1 = Toolkit.getDefaultToolkit().createImage(imageUrl);
imageUrl = getClass().getResource("image/img3.png");
act2 = Toolkit.getDefaultToolkit().createImage(imageUrl);
}
private void initComponents() {
jPanel1 = new JPanel();
jLabel1 = new JLabel();
jLabel2 = new JLabel();
jTextField1 = new JTextField();
jTextField2 = new JTextField();
jButton_send = new JButton();
jPanel2 = new JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new java.awt.Dimension(400, 300));
jPanel1.setBorder(javax.swing.Border