java Swing之JTabbedPane用法实例 & JTable用法实例
来源:互联网 发布:火狐浏览器如何禁用js 编辑:程序博客网 时间:2024/06/10 18:43
一款用JTabbedPane选项卡实现的实例,其功能领域有:笑话、新闻、星座运势、成语、解梦。询问不同领域的问题,自动切换至对应的选项卡来输出答案。用到的技术主要有:javax.swing.JFrame,javax.swing.JTabbedPane,javax.swing.JScrollPane,javax.swing.GroupLayout,javax.swing.JTable,Jsoup。
程序运行效果图见(上一篇)Olami智能语义解析—学习娱乐小能手
该程序可运行jar包见xiaonengshou.jar
代码原文如下:
1、MyJFrame:界面显示。
import java.awt.Color;import java.awt.Desktop;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;import java.net.URL;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.swing.GroupLayout.Alignment;import javax.swing.GroupLayout;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTabbedPane;import javax.swing.JTable;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;public class MyJFrame extends javax.swing.JFrame { private static final long serialVersionUID = 1L; private JButton jButton_send; private JLabel jLabel1; private JLabel jLabel2; private JPanel jPanel1; private JTextField jTextField1; private JTextArea areaTxt; private JTabbedPane tabbedPanel; private JTable table; private String introduce = "你好,我是娱乐学习小能手。\r\n 我可以讲笑话、查运势、查新闻、查公交线、查成语、还可以解梦呢!\r\n\r\n"; private String[] introduces = {"笑话类:\r\n 1、讲笑话。\r\n 2、来个笑话。\r\n 趣图类:\r\n 1、看趣图。\r\n 2、来张趣图。","新闻类:\r\n 1、娱乐头条。\r\n 2、看新闻。","星座类:\r\n 1、摩羯座今日运势。\r\n 2、摩羯座本月运势。 \r\n 3、摩羯座的本周运势","成语类:\r\n 1、日积月累是什么意思。\r\n 2、有龙字的成语 。\r\n 3、带龙马的成语。","解梦类:\r\n 1、我梦到了黄金。\r\n 2、梦到了黄金有什么寓意。"}; private AppProcess app; public MyJFrame() { initComponents(); app = new AppProcess(); } private void initComponents() { jPanel1 = new JPanel(); jLabel1 = new JLabel(); jLabel2 = new JLabel(); jTextField1 = new JTextField(); jButton_send = new JButton(); tabbedPanel = new JTabbedPane(JTabbedPane.TOP); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setMinimumSize(new java.awt.Dimension(430, 280)); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("智能问答")); JLabel jl_href = new JLabel("<html><a href=''>相关代码详细说明</a></html>"); jl_href.addMouseListener(new MouseListener(){ @Override public void mouseClicked(MouseEvent arg0) { // TODO Auto-generated method stub Desktop desktop = Desktop.getDesktop(); try { desktop.browse(new URI("http://blog.csdn.net/u011827504/article/details/75284546")); } catch (IOException | URISyntaxException e1) { e1.printStackTrace(); } } @Override public void mouseEntered(MouseEvent arg0) {} @Override public void mouseExited(MouseEvent arg0) {} @Override public void mousePressed(MouseEvent arg0) {} @Override public void mouseReleased(MouseEvent arg0) {} }); jLabel1.setText("提问:"); jTextField1.setText("娱乐头条"); jButton_send.setText("send"); jButton_send.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton_sendActionPerformed(evt); } }); GroupLayout jPanel1Layout = new GroupLayout(jPanel1); GroupLayout.SequentialGroup hGroup = jPanel1Layout.createSequentialGroup(); hGroup.addGap(15); hGroup.addGroup(jPanel1Layout.createParallelGroup(Alignment.LEADING).addComponent(jLabel1)); hGroup.addGap(5); hGroup.addGroup(jPanel1Layout.createParallelGroup(Alignment.LEADING).addComponent(jTextField1).addComponent(jl_href).addComponent(jLabel2)); hGroup.addGap(5); hGroup.addGroup(jPanel1Layout.createParallelGroup(Alignment.LEADING).addComponent(jButton_send)); hGroup.addGap(15); jPanel1Layout.setHorizontalGroup(hGroup); GroupLayout.SequentialGroup vGroup = jPanel1Layout.createSequentialGroup(); vGroup.addGap(8); vGroup.addGroup(jPanel1Layout.createParallelGroup(Alignment.LEADING).addComponent(jl_href)); vGroup.addGap(8); vGroup.addGroup(jPanel1Layout.createParallelGroup(Alignment.LEADING).addComponent(jLabel1) .addComponent(jTextField1).addComponent(jButton_send)); vGroup.addGap(8); vGroup.addGroup(jPanel1Layout.createParallelGroup(Alignment.LEADING).addComponent(jLabel2)); vGroup.addGap(8); //设置垂直组 jPanel1Layout.setVerticalGroup(vGroup); jPanel1.setLayout(jPanel1Layout); //创建面板 JScrollPane panel_joke = new JScrollPane(); JScrollPane panel_news = new JScrollPane(); JScrollPane panel_hor = new JScrollPane(); JScrollPane panel_idiom = new JScrollPane(); JScrollPane panel_oneir = new JScrollPane(); areaTxt = new JTextArea(); areaTxt.setColumns(28); areaTxt.setRows(15); areaTxt.setText(introduce + introduces[0]); areaTxt.setEditable(false); areaTxt.setLineWrap(true); areaTxt.setAutoscrolls(true); panel_joke.setViewportView(areaTxt); tabbedPanel.addTab("笑话",panel_joke); tabbedPanel.addTab("新闻",panel_news); tabbedPanel.addTab("星座",panel_hor); tabbedPanel.addTab("成语",panel_idiom); tabbedPanel.addTab("解梦",panel_oneir); tabbedPanel.addChangeListener(new ChangeListener(){ @Override public void stateChanged(ChangeEvent arg0) { // TODO Auto-generated method stub int index = tabbedPanel.getSelectedIndex(); areaTxt.setText(introduce + introduces[index]); ((JScrollPane)tabbedPanel.getComponent(index)).setViewportView(areaTxt); } }); GroupLayout layout = new GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(GroupLayout.Alignment.LEADING) .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING) .addComponent(tabbedPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(tabbedPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); pack(); } private void jButton_sendActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Map<String, Object> retMap = app.process(jTextField1.getText()); jLabel2.setText(""); if (retMap.containsKey("ds")) { jLabel2.setText(retMap.get("ds").toString()); jLabel2.setForeground(Color.red); } else if (retMap.containsKey("joke")) { Object obj = retMap.get("joke"); tabbedPanel.setSelectedIndex(0); JScrollPane jpanel = ((JScrollPane) tabbedPanel.getComponent(0)); if (obj instanceof String) { areaTxt.setText(obj.toString()); jpanel.setViewportView(areaTxt); } else { JLabel jLabel = new JLabel(); if (obj != null) { ImageIcon image = new ImageIcon((URL) obj); jLabel.setIcon(image); } else { jLabel.setText("图片加载失败!"); } jpanel.setViewportView(jLabel); } }else if (retMap.containsKey("horoname")){ Object obj = retMap.get("horoname"); tabbedPanel.setSelectedIndex(2); JScrollPane jpanel = ((JScrollPane) tabbedPanel.getComponent(2)); areaTxt.setText(obj.toString()); jpanel.setViewportView(areaTxt); }else if(retMap.containsKey("news")){ Object obj = retMap.get("news"); tabbedPanel.setSelectedIndex(1); JScrollPane jpanel = ((JScrollPane) tabbedPanel.getComponent(1)); if (obj instanceof String) { areaTxt.setText(obj.toString()); jpanel.setViewportView(areaTxt); }else{ @SuppressWarnings("unchecked") Map<String, List<String>> newsMap = (HashMap<String, List<String>>)obj; List<String> titleList = newsMap.get("title"); final List<String> urlList = newsMap.get("url"); table = getSimpleTable(titleList); jpanel.setViewportView(table); table.addMouseListener(new MouseListener(){ @Override public void mouseClicked(MouseEvent arg0) { // TODO Auto-generated method stub // 取得用户所选行的行数 int selectRows=table.getSelectedRows().length; if(selectRows==1){ // 取得用户所选单行 int selectedRowIndex = table.getSelectedRow(); String url = urlList.get(selectedRowIndex); Desktop desktop = Desktop.getDesktop(); try { desktop.browse(new URI(url)); } catch (IOException | URISyntaxException e1) { e1.printStackTrace(); } } } @Override public void mouseEntered(MouseEvent arg0) {} @Override public void mouseExited(MouseEvent arg0) {} @Override public void mousePressed(MouseEvent arg0) {} @Override public void mouseReleased(MouseEvent arg0) {}}); } }else if(retMap.containsKey("oneiromancy")){ Object obj = retMap.get("oneiromancy"); tabbedPanel.setSelectedIndex(4); final JScrollPane jpanel = ((JScrollPane) tabbedPanel.getComponent(4)); if (obj instanceof String) { areaTxt.setText(obj.toString()); jpanel.setViewportView(areaTxt); }else{ @SuppressWarnings("unchecked") Map<String, List<String>> OneirMap = (HashMap<String, List<String>>)obj; List<String> wordList = OneirMap.get("word"); final List<String> urlList = OneirMap.get("url"); table = getSimpleTable(wordList); jpanel.setViewportView(table); table.addMouseListener(new MouseListener(){ @Override public void mouseClicked(MouseEvent arg0) { // TODO Auto-generated method stub // 取得用户所选行的行数 int selectRows=table.getSelectedRows().length; if(selectRows==1){ // 取得用户所选单行 int selectedRowIndex = table.getSelectedRow(); String url = urlList.get(selectedRowIndex); String answer = app.getOneirData(url); areaTxt.setText(answer); jpanel.setViewportView(areaTxt); } } @Override public void mouseEntered(MouseEvent arg0) {} @Override public void mouseExited(MouseEvent arg0) {} @Override public void mousePressed(MouseEvent arg0) {} @Override public void mouseReleased(MouseEvent arg0) {}}); } }else if(retMap.containsKey("idioms")){ Object obj = retMap.get("idioms"); tabbedPanel.setSelectedIndex(3); final JScrollPane jpanel = ((JScrollPane) tabbedPanel.getComponent(3)); if (obj instanceof String) { areaTxt.setText(obj.toString()); jpanel.setViewportView(areaTxt); }else{ @SuppressWarnings("unchecked") Map<String, List<String>> OneirMap = (HashMap<String, List<String>>)obj; List<String> nameList = OneirMap.get("name"); final List<String> idList = OneirMap.get("id"); table = getSimpleTable(nameList); jpanel.setViewportView(table); table.addMouseListener(new MouseListener(){ @Override public void mouseClicked(MouseEvent arg0) { // TODO Auto-generated method stub // 取得用户所选行的行数 int selectRows=table.getSelectedRows().length; if(selectRows==1){ // 取得用户所选单行 int selectedRowIndex = table.getSelectedRow(); String id = idList.get(selectedRowIndex); String answer = app.getIdiomsP(id); areaTxt.setText(answer); jpanel.setViewportView(areaTxt); } } @Override public void mouseEntered(MouseEvent arg0) {} @Override public void mouseExited(MouseEvent arg0) {} @Override public void mousePressed(MouseEvent arg0) {} @Override public void mouseReleased(MouseEvent arg0) {}}); } } } public JTable getSimpleTable(List<String> titleList){ String[] colname = {"请选择"}; int num = titleList.size(); Object[][] data = new Object[num][1]; for(int i =0; i < num; i++ ){ data[i] = new Object[]{(i+1) + "、" +titleList.get(i)}; } JTable jtable = new JTable(data,colname); return jtable; } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { MyJFrame frame = new MyJFrame(); frame.setTitle("自然语言理解试验小程序——学习娱乐小能手"); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); }}
2、NLIProcess:智能语义解析(支持领域有笑话、新闻、星座运势、成语、解梦)。
import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.ArrayList;import java.util.Calendar;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.http.HttpEntity;import org.apache.http.NameValuePair;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONException;import com.alibaba.fastjson.JSONObject;public class NLIProcess { private static final String url = "https://cn.olami.ai/cloudservice/api"; private static final String Appkey = "fcf20941682b494e9db8c23c14deeb74"; private static final String Appsecret = "1bcbbe1fb5924185a13c9b5f6d548ee0"; private static final String api = "nli"; private JSONObject process (String input) { JSONObject NLIresult = new JSONObject(); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("appkey", Appkey)); params.add(new BasicNameValuePair("api", api)); long timestamp = Calendar.getInstance().getTimeInMillis(); params.add(new BasicNameValuePair("timestamp", String.valueOf(timestamp))); params.add(new BasicNameValuePair("sign", generateSign(timestamp))); JSONObject request = new JSONObject(); JSONObject data = new JSONObject(); try { data.put("input_type", 0); data.put("text", input); request.put("data_type", "stt"); request.put("data", data); } catch (JSONException e1) { e1.printStackTrace(); return NLIresult; } params.add(new BasicNameValuePair("rq", request.toString())); params.add(new BasicNameValuePair("cusid", "asdfghj")); CloseableHttpClient httpclient = HttpClients.createDefault(); HttpPost httppost = new HttpPost(url); try { httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); CloseableHttpResponse response = httpclient.execute(httppost); try { HttpEntity entity = response.getEntity(); if (entity != null) { String contnt = EntityUtils.toString(entity); NLIresult = JSONObject.parseObject(contnt); } } finally { response.close(); } } catch (Exception e) { e.printStackTrace(); return NLIresult; } finally { try { httpclient.close(); } catch (Exception e) { e.printStackTrace(); } } return NLIresult; } private String generateSign(long timestamp) { String sign = Appsecret + "api=" + api + "appkey=" + Appkey + "timestamp=" + timestamp + Appsecret; return MD5String(sign); } public String MD5String(String str) { try { MessageDigest msgDigest = MessageDigest.getInstance("MD5"); msgDigest.reset(); msgDigest.update(str.getBytes("UTF-8")); byte[] byteArrary = msgDigest.digest(); StringBuffer md5StrBuff = new StringBuffer(); for (int i = 0; i < byteArrary.length; i++) { String tmp = Integer.toHexString(0xFF & byteArrary[i]); if (tmp.length() == 1) { md5StrBuff.append(0).append(tmp); } else { md5StrBuff.append(tmp); } } return md5StrBuff.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return null; } catch (UnsupportedEncodingException e) { e.printStackTrace(); return null; } } public Semantic parseSemantic(String input) { JSONObject semantic = process(input); Semantic s = new Semantic(); if (semantic == null || !"ok".equalsIgnoreCase(semantic.getString("status"))) return s; JSONObject data = semantic.getJSONObject("data"); JSONArray s_list = data.getJSONArray("nli"); JSONObject s_first = s_list.getJSONObject(0); s.app = s_first.getString("type"); JSONObject desc_obj = s_first.getJSONObject("desc_obj"); s.status = desc_obj.getInteger("status"); if (0 == s.status && desc_obj.containsKey("result")) { s.answer = desc_obj.getString("result"); }else if(0 != s.status){ s.answer = desc_obj.getString("result"); return s; } JSONObject intention = s_first.getJSONArray("semantic").getJSONObject(0); JSONArray modifier = intention.getJSONArray("modifier"); for (int i = 0; i != modifier.size(); i++) { s.modifiers.add(modifier.getString(i)); } JSONArray slots = intention.getJSONArray("slots"); for (int i = 0; i != slots.size(); i++) { JSONObject record = slots.getJSONObject(i); Slot slot = new Slot(); slot.name = record.getString("name"); slot.value = record.getString("value"); s.slots.put(slot.name, slot); } return s; }}class Semantic { String app = ""; String answer = ""; Map<String, Slot> slots = new HashMap<String, Slot>(); List<String> modifiers = new ArrayList<>(); int status = -1;}class Slot { String name = ""; String value = "";}
3、AppProcess:笑话和成语的api接口访问,新闻、星座运势、解梦爬虫。
import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.text.MessageFormat;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.http.HttpEntity;import org.apache.http.ParseException;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.util.EntityUtils;import org.eclipse.swt.graphics.ImageData;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.parser.Parser;import org.jsoup.parser.XmlTreeBuilder;import org.jsoup.select.Elements;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;public class AppProcess { private NLIProcess nli = new NLIProcess(); private Map<String,List<String>> horMap = new HashMap<>(); private List<String> jokeList = new ArrayList<String>(); private List<String> jokePicList = new ArrayList<String>(); private void getHorMap(){ String[] horStrs = {"白羊座","金牛座","双子座","巨蟹座","狮子座","处女座","天秤座","天蝎座","射手座","摩羯座","水瓶座","双鱼座"}; String[] yunshiStrs = {"todaybox3","tomorrowbox3","weekbox3","monthbox3","textbox"}; for(int i = 1; i <= 12; i++){ List<String> yunshiList = new ArrayList<>(); for(int j = 1; j <= 5; j++){ String url = MessageFormat.format("http://cn.xingbar.com/cgi-bin/x5starfate2?fate={0}&type={1}", j, i); String httpContent = getHttpContent(url, "GBK"); if (httpContent != null && !httpContent.equals("")){ Document doc = Jsoup.parse(httpContent); Element boxElement = doc.getElementsByClass(yunshiStrs[j-1]).first(); if(boxElement != null){ StringBuffer content = new StringBuffer(); Elements dottxtElements = boxElement.getElementsByClass("dotLbox"); if(dottxtElements != null){ for(Element e : dottxtElements){ content.append(e.text() + "\r\n"); } } Elements dotRtxtElements = boxElement.getElementsByClass("dotRbox"); if(dotRtxtElements != null){ for(Element e : dotRtxtElements){ content.append(e.text() + "\r\n"); } } Elements trElements = boxElement.select("tr"); for(Element e : trElements){ content.append(e.text() + "\r\n"); } yunshiList.add(content.toString()); } } } horMap.put(horStrs[i-1], yunshiList); } } private void getJokeList(){ String jokeUrl = "http://api.laifudao.com/open/xiaohua.json"; String jokePicUrl = "http://api.laifudao.com/open/tupian.json"; String httpContent = getHttpContent(jokeUrl,"UTF-8"); JSONArray jokeJS = JSONArray.parseArray(httpContent); for(int i = 0; i<jokeJS.size(); i++){ JSONObject js = jokeJS.getJSONObject(i); String jTitle = js.getString("title"); String jContent = js.getString("content"); jokeList.add(jTitle + "\r\n" + jContent.replaceAll("<br/><br/>", "\r\n")); } httpContent = getHttpContent(jokePicUrl,"UTF-8"); JSONArray jokepJS = JSONArray.parseArray(httpContent); for(int i = 0; i<jokepJS.size(); i++){ JSONObject js = jokepJS.getJSONObject(i); String jContent = js.getString("sourceurl"); jokePicList.add(jContent); } } private Map<String, List<String>> getNewsMap(String type){ Map<String, List<String>> newsMap = new HashMap<>(); List<String> titleList = new ArrayList<>(); List<String> urlList = new ArrayList<>(); String url = MessageFormat.format("http://www.chinanews.com/rss/{0}.xml", type); String httpContent = getHttpContent(url,"gbk"); //Document doc = Jsoup.parse(httpContent); Document doc = Jsoup.parse(httpContent, "", new Parser(new XmlTreeBuilder())); //item Elements itemElements = doc.select("item"); if(itemElements != null){ for(Element e : itemElements){ String title = e.select("title").first().text(); String link = e.select("link").first().text(); titleList.add(title); urlList.add(link); } newsMap.put("title", titleList); newsMap.put("url", urlList); } return newsMap; } private Map<String, List<String>> getOneirMap(String content){ Map<String, List<String>> OneirMap = new HashMap<>(); List<String> wordList = new ArrayList<>(); List<String> urlList = new ArrayList<>(); String path = "http://www.aqioo.cn"; String url = "http://www.aqioo.cn/dream/Dlist?word=" + content; String httpContent = getHttpContent(url, "GBK"); if (httpContent != null && !httpContent.equals("")){ Document doc = Jsoup.parse(httpContent); Element fixElement = doc.getElementsByClass("clearfix").first(); if(fixElement != null){ Elements aElements = fixElement.select("a"); if(aElements != null){ for(Element e : aElements){ String word = e.text(); String id = e.attr("href"); wordList.add(word); urlList.add(path+id); } OneirMap.put("word", wordList); OneirMap.put("url", urlList); } } } return OneirMap; } public String getOneirData(String url){ StringBuffer content = new StringBuffer(); String httpContent = getHttpContent(url, "GBK"); if (httpContent != null && !httpContent.equals("")){ Document doc = Jsoup.parse(httpContent); Element idElement = doc.getElementById("wraper"); if(idElement != null){ Element infoElement = idElement.getElementsByClass("info").first(); content.append(infoElement.text()); } } return content.toString(); } private Map<String, List<String>> getIdioms(String idiom){ Map<String, List<String>> idiomsMap = new HashMap<>(); List<String> idiomList = new ArrayList<>(); List<String> idList = new ArrayList<>(); String urlkey = "您申请的key值"; String url = "http://api.avatardata.cn/ChengYu/Search?key="+urlkey+"&keyWord="+idiom; String httpContent = getHttpContent(url,"UTF-8"); JSONObject idiomJS = JSONObject.parseObject(httpContent); if(idiomJS != null && idiomJS.get("reason").equals("Succes")){ JSONArray idiomsJSlist = idiomJS.getJSONArray("result"); int size = idiomsJSlist.size(); for(int i = 0; i<size; i++){ JSONObject js = idiomsJSlist.getJSONObject(i); idiomList.add(js.getString("name")); idList.add(js.getString("id")); } idiomsMap.put("name", idiomList); idiomsMap.put("id", idList); if(size == 1){ String desc = getIdiomsP(idList.get(0)); List<String> descList = new ArrayList<>(); descList.add(desc); idiomsMap.put("desc", descList); } } return idiomsMap; } public String getIdiomsP(String id){ String urlkey = "您申请的key值"; String url = "http://api.avatardata.cn/ChengYu/LookUp?key="+urlkey+"&id="+id; String httpContent = getHttpContent(url,"UTF-8"); JSONObject idiomJS = JSONObject.parseObject(httpContent).getJSONObject("result"); StringBuffer retStr = new StringBuffer(); retStr.append("成语:"+idiomJS.getString("name")+"\r\n" + "拼音:"+idiomJS.getString("spell")+"\r\n"+"释义:"+idiomJS.getString("content")+"\r\n"); String derivation = idiomJS.getString("derivation"); if(derivation!= null && !derivation.equals("")){ retStr.append("出处:"+derivation+"\r\n"); } String samples = idiomJS.getString("samples"); if(samples!= null && !samples.equals("")){ retStr.append("例句:"+samples+"\r\n"); } return retStr.toString(); } public String getHttpContent(String url,String charset) { StringBuffer httpContent = new StringBuffer(); CloseableHttpClient httpclient = HttpClients.createDefault(); try { HttpGet httpget = new HttpGet(url); CloseableHttpResponse response = httpclient.execute(httpget); try { // 获取响应实体 HttpEntity entity = response.getEntity(); if (entity != null) { if(charset != null && !charset.isEmpty()){ httpContent.append(EntityUtils.toString(entity,charset)); }else{ httpContent.append(EntityUtils.toString(entity)); } } } finally { response.close(); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // 关闭连接,释放资源 try { httpclient.close(); } catch (IOException e) { e.printStackTrace(); } } return httpContent.toString(); } public ImageData DownloadImg(String listImgSrc) { try { URL url = new URL(listImgSrc); HttpURLConnection urlcon = (HttpURLConnection) url.openConnection(); urlcon.setInstanceFollowRedirects(false); urlcon.setRequestMethod("GET"); urlcon.setDoOutput(true); urlcon.setDoInput(true); if (urlcon.getResponseCode() == HttpURLConnection.HTTP_OK) { try (InputStream urlcon_is = urlcon.getInputStream();) { return new ImageData(urlcon_is); } catch (IOException e) { e.printStackTrace(); } } } catch (IOException e) { e.printStackTrace(); } return null; } private URL getUrl(String picurl){ try { URL url = new URL(picurl); return url; } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public Map<String, Object> process(String input) { Semantic s = nli.parseSemantic(input); Map<String, Object> retMap = new HashMap<String, Object>(); if(s.app.equals("joke")){ if(jokeList.size() < 1 || jokePicList.size() < 1){ getJokeList(); } if(s.modifiers.contains("query")){ if(jokeList.size() < 1){ retMap.put("joke", "对不起,网络不给力,笑话加载失败。"); }else{ int randomInt = (int)(Math.random() * jokeList.size()); retMap.put("joke", jokeList.get(randomInt)); } }else if(s.modifiers.contains("query_pic")){ if(jokeList.size() < 1){ retMap.put("joke", "对不起,网络不给力,趣图加载失败。"); }else{ int randomInt = (int)(Math.random() * jokePicList.size()); String picurl = jokePicList.get(randomInt); retMap.put("joke", getUrl(picurl)); } }else{ retMap.put("joke", s.answer); } }else if(s.app.equals("news")){ if(s.modifiers.contains("query")){ Map<String, List<String>> newsMap = new HashMap<>(); if(s.slots != null && !s.slots.isEmpty()){ String slotValue = s.slots.get("type").value; newsMap = getNewsMap(slotValue); }else{ newsMap = getNewsMap("importnews"); } if(newsMap.isEmpty()){ retMap.put("news", "对不起,网络不给力,新闻加载失败。"); }else{ retMap.put("news", newsMap); } }else{ retMap.put("news", s.answer); } }else if(s.app.equals("horoname")){ if(horMap.isEmpty()){ getHorMap(); } //horMap String slotValue = s.slots.get("hname").value; List<String> horList = horMap.get(slotValue); if(s.modifiers.contains("can")){ retMap.put("horoname", s.answer); }else if(horList.size() < 1){ retMap.put("horoname", "对不起,网络不给力,运势加载失败。"); }else if(s.modifiers.contains("lucktoday")){ retMap.put("horoname", horList.get(0)); }else if(s.modifiers.contains("lucktomor")){ retMap.put("horoname", horList.get(1)); }else if(s.modifiers.contains("luckweek")){ retMap.put("horoname", horList.get(2)); }else if(s.modifiers.contains("luckmonth")){ retMap.put("horoname", horList.get(3)); }else if(s.modifiers.contains("luckyear")){ retMap.put("horoname", horList.get(4)); } }else if(s.app.equals("oneiromancy")){ if(s.modifiers.contains("query")){ String slotValue = s.slots.get("content").value; Map<String, List<String>> OneirMap = getOneirMap(slotValue); if(OneirMap.isEmpty()){ retMap.put("news", "对不起,网络不给力,解梦信息加载失败。"); }else{ retMap.put("oneiromancy", OneirMap); } }else{ retMap.put("oneiromancy", s.answer); } }else if(s.app.equals("idioms")){ Map<String, List<String>> idiomsMap = new HashMap<>(); if(s.modifiers.contains("query")){ String slotValue = s.slots.get("iname").value; idiomsMap = getIdioms(slotValue); }else if(s.modifiers.contains("query_idioms")){ String slotValue = s.slots.get("ikeyword").value; idiomsMap = getIdioms(slotValue); } if(idiomsMap.isEmpty()){ retMap.put("idioms", "对不起,网络不给力,成语加载失败。"); }else{ if(idiomsMap.containsKey("desc")){ String desc = idiomsMap.get("desc").get(0); retMap.put("idioms", desc); }else{ retMap.put("idioms", idiomsMap); } } }else if(s.app.equals("ds")){ retMap.put("ds", s.answer); } return retMap; }}
阅读全文
0 0
- java Swing之JTabbedPane用法实例 & JTable用法实例
- java Swing之JTabbedPane用法实例 & JTable用法实例
- Swing之ButtonGroup用法实例
- java swing JList用法实例
- Java Swing 之JTable及其简单的用法
- java Swing JTable的复杂应用实例
- 【swing】jtable用法
- Java+JTabbedPane+JTable
- Java Swing之Jtable
- oreilly java swing : JTable 之JTable
- Java Thread 用法实例
- Java,super用法实例
- Java 之Random用法及实例
- java--JTable用法
- Java Jtable用法总结
- 深入了解Swing编程JTable的用法
- javascript之call用法实例
- oracle之union用法实例
- HTML标签常见和不常见但常用的属性
- 使用Splatting方法来传递参数
- 使用selector实现按压控件改变背景颜色
- 文章标题
- 多线程简单整理
- java Swing之JTabbedPane用法实例 & JTable用法实例
- CentOS修改主机名
- Windows服务开发相关
- 今日小程序推荐:汇率即时查-打通微信直接搜一搜
- int和string以及char *和string的互相转换
- ON DUPLICATE KEY UPDATE
- WebSocket 实时更新mysql数据到页面
- zookeeper:Invalid session id 引起客户端不停地自动重连
- node.js与npm的更新