今天本来想继续昨天的struts1 系列,不过最近在研究swing,有了一点小心得,正好记录下来。
写web 项目做多了,就会有一种对羡慕,对桌面程序那种快速反应的向往。看到web页面载入时的那个慢呀,真是受不了。不过java做桌面程序还比dephi,c++,c#之流的还是差了些(个人感觉),当然了,如果你是高手,树枝都能变成剑。
入门肯定要做个小东西这类的,我今天就来个桌面词典,大致思路 是用户输入一个单词,点击按钮,调用网络api进行翻译,因为自己写个翻译的比较麻烦。所以远行这个软件要求连网。
swing 中能访问url 的组件有JEditorPane,这个组件是显示文本的pane。但是解析html的效果,真是很难看,
看下面代码:
package swing.component; //这段程序代码主要向读者展示如何创建一个带URL地址的JEditorPane组件 import java.awt.event.WindowAdapter; public class JEditorPaneTest { public static void main(String[] args) { JEditorPane editPane = null; try { URL address = new URL("http://www.google.com"); editPane = new JEditorPane(address); // 创建一个带URL地址的JEditorPane组件 } catch (MalformedURLException e) { System.out.println("Malformed URL:" + e); } catch (IOException e) { System.out.println("IOException:" + e); } editPane.setEditable(false); JFrame f = new JFrame("网页测试窗口"); f.setContentPane(new JScrollPane(editPane)); f.setSize(200, 250); f.setVisible(true); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } }
看到了吧,真是很难看。
不过人类的智慧是很强的,有了jdic,有切又有希望了,jdic是一个桌面程序加强本地化的工具包。
直接上代码
package swing.component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.MalformedURLException; import java.net.URL; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextField; import org.jdesktop.jdic.browser.WebBrowser; /** * 引用dist * 内嵌ie浏览器的例子,只能把ie设为默认浏览器,一个在线翻译的小工具 * */ public class IEBrowserTest extends JFrame { private WebBrowser browser = null; private JTextField jtf =null; private JButton jb =null; public IEBrowserTest() { browser = new WebBrowser();//jdic 的browser this.setTitle("小词典"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLayout(new FlowLayout());//流式布局 browser.setSize(450, 400); jtf = new JTextField(30); this.add(jtf); jb = new JButton("翻译"); jb.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { try { if (jtf.getText()!=null && !"".equals(jtf.getText())){ browser.setURL(new URL("http://dict.cn/mini.php?q="+jtf.getText()));//调用辞海的翻译 } } catch (MalformedURLException e1) { e1.printStackTrace(); } } }); this.add(jb); this.add(browser); this.pack(); this.setSize(500, 500); this.setVisible(true); } public static void main(String[] args) throws Exception { new IEBrowserTest(); } }
这个是关键,
browser.setURL(new URL("http://dict.cn/mini.php?q="+jtf.getText()));//调用辞海的翻译
别的就没什么可说的了,需要注意的是必须把ie设为默认浏览器,否则报错。还记得要引 jdic的包。