Java利用图灵机器人接口实现简单的聊天程序

package test;

import java.awt.EventQueue;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.Timer;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class Test{

    private JFrame frame;
    private JTextField textField;
    private JLabel lblNewLabel,lblNewLabel_1;
    private JTextArea textArea;
    /**
     * Launch the application.
     */
    
     private void setTimer(JLabel time){   
            final JLabel varTime = time;   
            Timer timeAction = new Timer(1000, new ActionListener() {          
      
                public void actionPerformed(ActionEvent e) {       
                    long timemillis = System.currentTimeMillis();
                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
                    varTime.setText(df.format(new Date(timemillis)));   
                }      
            });            
            timeAction.start();        
        }   
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Test window = new Test();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public Test() {
        initialize();
    }
    String chat(String quesiton) throws IOException
    {
        String APIKEY="f0feee3416c846a6be5fdc523b372c20";
        String INFO=URLEncoder.encode(quesiton, "utf-8");
        String getURL = "http://www.tuling123.com/openapi/api?key=" + APIKEY + "&info=" + INFO;
        URL getUrl = new URL(getURL);
        HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection();
        connection.connect();
        
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
        StringBuffer sb = new StringBuffer();
        String line="";
        while ((line = reader.readLine()) != null) 
            sb.append(line);
            
        reader.close();
        connection.disconnect();
        
        String[] ss = new String[10];
        String s = sb.toString();
        String answer;
        ss = s.split(":");
        answer = ss[ss.length-1];
        answer = answer.substring(1,answer.length()-2);
        return answer;
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame("Origami");
        frame.setResizable(false);
        frame.setBackground(Color.WHITE);
        frame.setBounds(100, 100, 729, 424);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
        
        ImageIcon icon=new ImageIcon(getClass().getResource("/timg.jpg"));
        lblNewLabel=new JLabel(icon);
        lblNewLabel.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                textArea.setText("干嘛点我...");
            }
        });
        lblNewLabel.setBounds(423, 0, 277, 309);
        frame.getContentPane().add(lblNewLabel);
        
        textField = new JTextField();
        textField.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String question=textField.getText();
                try {
                    String answer=chat(question);
                    textArea.setText(answer);
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        });
        textField.setBounds(14, 322, 395, 24);
        frame.getContentPane().add(textField);
        textField.setColumns(10);
        
        lblNewLabel_1 = new JLabel();
        lblNewLabel_1.setBounds(516, 314, 143, 41);
        frame.getContentPane().add(lblNewLabel_1);
        this.setTimer(lblNewLabel_1);
        
        textArea = new JTextArea();
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);
        textArea.setBounds(14, 13, 395, 296);
        frame.getContentPane().add(textArea);
    }
}
原文地址:https://www.cnblogs.com/NDKY9/p/8051579.html