今天本来想继续昨天的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的包。