【swing开发杂谈】1.美化并在cmd环境下运行你的swing程序
2015-01-01 19:34
411 查看
我就用一个实际的例子说一下我使用swing的心得体会。
实例中的程序有以下功能:
1. 获取远程的html代码
用户输入网址,然后获取这个地址的html代码并显示,这个纯粹是一个演示的功能。。。
2. http post 测试
使用http post数据到服务器
目录如下:
好吧,让我们开始吧!
下面是初版本的netHelper的运行效果(使用系统默认的外观与字体):
对比一下swing原始的效果:
主要看字体,还有按钮的外观,很明显。
而其中主要是两段代码在起作用:
[java]
view plaincopy
/**
* 设置字体,使用系统默认,12px
*/
public static void setUIFont() {
FontUIResource f=new FontUIResource("default", Font.PLAIN,12);
java.util.Enumeration<Object> keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof javax.swing.plaf.FontUIResource)
UIManager.put(key, f);
}
}
/**
* 设置UIManager
*/
public static void setUI(){
//设置UIMangager为系统默认
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
}
view plaincopy
public MainFrame(){
this.setSize(width, height);
this.setLocationRelativeTo(null);
this.setTitle( title + " by:集成显卡");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initUI();
}
以上是MainFrame的构造函数。
通过setSize(int w, int h) 方法可以设置窗口大小,还可以传递一个 dimension 对象。
setLocationRelativeTo(Component) 可以设置此窗体相对于某个控件的位置,如果参数为null,那么此窗体会在屏幕居中。
setDefaultCloseOperation(int) 方法可以设置窗体的关闭按钮被点击时退出程序。
然后 调用initUI() 方法 初始化子控件。
[java]
view plaincopy
public void actionPerformed(ActionEvent arg0) {
}
在MainFrame中有如下实现:
[java]
view plaincopy
private void loadHtml(){
String http = "http://";
String url = urlTF.getText().trim();
if(!url.startsWith(http)){
url = http + url;
}
this.textArea.setText(NetService.getDataFromURL(url));
}
@Override
public void actionPerformed(ActionEvent arg0) {
Object obj = arg0.getSource();
if(obj == getBtn){
loadHtml();
}else if(obj == aboutBtn){
JOptionPane.showMessageDialog(
null,
"输入网址,点击Get按钮后会加载网址的内容到下面的编辑框中。",
title,
JOptionPane.INFORMATION_MESSAGE
);
}
}
首先通过ActionEvent的getSource() 方法获得事件源控件,然后判断控件,作相应的操作。
当是“Get”按钮,调用 loadHtml() 方法,在loadHtml 方法中先获取输入的地址,然后调用 NetService 中的静态方法 getDataFromURL(String) 获取远程地址的html代码,最后显示到 TextArea中。
当是“About”按钮被点击,弹出一个信息对话框。JOptionPane 很是常用,使用也比较简单。
这里我就说一下用eclipde生成jar后,怎么快速地在其他电脑上运行我们的swing程序。
在eclipse下,右击项目,Export,然后:runable jar....
两个都是可以的,我一般用第二个,这样用到的额外包会以jar文件的形式放到你的jar包中,而第一个就是会解压额外包的class到你的jar中,这样你的jar中就很多package了,很乱。
我选择用批处理的方法运行我的程序,因为是java程序,还是要一个JRE,以上是我的run.bat文件:
[plain]
view plaincopy
#首先设置java路径
path = %path%;e:/java/jre6/bin
java -jar netHelper.jar
这里用的是一个绝对路径的JRE,当要将程序拷贝到其他机子时,就将JRE copy到我们jar包的同目录,然后将JRE的路径修改为相对路径:
path = %path%;jre6/bin
这样就好了。
好了。
下一篇会讲swing的多线程。
软件功能
此软件就叫netHelper吧实例中的程序有以下功能:
1. 获取远程的html代码
用户输入网址,然后获取这个地址的html代码并显示,这个纯粹是一个演示的功能。。。
2. http post 测试
使用http post数据到服务器
目录如下:
好吧,让我们开始吧!
1.对swing程序进行美化
刚刚开始用swing的时候,觉得swing的界面很是复古,字体也是很模糊的样子,其他swing是可以使用系统的外观的,那么看上去就跟系统的界面差不多了。下面是初版本的netHelper的运行效果(使用系统默认的外观与字体):
对比一下swing原始的效果:
主要看字体,还有按钮的外观,很明显。
而其中主要是两段代码在起作用:
[java]
view plaincopy
/**
* 设置字体,使用系统默认,12px
*/
public static void setUIFont() {
FontUIResource f=new FontUIResource("default", Font.PLAIN,12);
java.util.Enumeration<Object> keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof javax.swing.plaf.FontUIResource)
UIManager.put(key, f);
}
}
/**
* 设置UIManager
*/
public static void setUI(){
//设置UIMangager为系统默认
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
}
2.对JFrame作一个常规的设置
[java]view plaincopy
public MainFrame(){
this.setSize(width, height);
this.setLocationRelativeTo(null);
this.setTitle( title + " by:集成显卡");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initUI();
}
以上是MainFrame的构造函数。
通过setSize(int w, int h) 方法可以设置窗口大小,还可以传递一个 dimension 对象。
setLocationRelativeTo(Component) 可以设置此窗体相对于某个控件的位置,如果参数为null,那么此窗体会在屏幕居中。
setDefaultCloseOperation(int) 方法可以设置窗体的关闭按钮被点击时退出程序。
然后 调用initUI() 方法 初始化子控件。
3.响应事件
当用户点击其中一个按钮时,程序会做特定的事情,比如链接指定的地址并得到html源代码。这时,就要给按钮注册一个事件监听器,则调用JButton的addActionListener(ActionListener) 方法,这里,我让MainFram直接实现了 ActionListener 接口,此接口有一个方法:[java]
view plaincopy
public void actionPerformed(ActionEvent arg0) {
}
在MainFrame中有如下实现:
[java]
view plaincopy
private void loadHtml(){
String http = "http://";
String url = urlTF.getText().trim();
if(!url.startsWith(http)){
url = http + url;
}
this.textArea.setText(NetService.getDataFromURL(url));
}
@Override
public void actionPerformed(ActionEvent arg0) {
Object obj = arg0.getSource();
if(obj == getBtn){
loadHtml();
}else if(obj == aboutBtn){
JOptionPane.showMessageDialog(
null,
"输入网址,点击Get按钮后会加载网址的内容到下面的编辑框中。",
title,
JOptionPane.INFORMATION_MESSAGE
);
}
}
首先通过ActionEvent的getSource() 方法获得事件源控件,然后判断控件,作相应的操作。
当是“Get”按钮,调用 loadHtml() 方法,在loadHtml 方法中先获取输入的地址,然后调用 NetService 中的静态方法 getDataFromURL(String) 获取远程地址的html代码,最后显示到 TextArea中。
当是“About”按钮被点击,弹出一个信息对话框。JOptionPane 很是常用,使用也比较简单。
4. 打包swing程序,并到处运行
目前将java程序转换为exe双击运行的工具有很多,推荐 exe4j,这个是共享软件,不过,你可以很方便找到破解版,你懂的。这里我就说一下用eclipde生成jar后,怎么快速地在其他电脑上运行我们的swing程序。
在eclipse下,右击项目,Export,然后:runable jar....
两个都是可以的,我一般用第二个,这样用到的额外包会以jar文件的形式放到你的jar包中,而第一个就是会解压额外包的class到你的jar中,这样你的jar中就很多package了,很乱。
我选择用批处理的方法运行我的程序,因为是java程序,还是要一个JRE,以上是我的run.bat文件:
[plain]
view plaincopy
#首先设置java路径
path = %path%;e:/java/jre6/bin
java -jar netHelper.jar
这里用的是一个绝对路径的JRE,当要将程序拷贝到其他机子时,就将JRE copy到我们jar包的同目录,然后将JRE的路径修改为相对路径:
path = %path%;jre6/bin
这样就好了。
好了。
下一篇会讲swing的多线程。
代码下载
源码下载地址:http://download.csdn.net/detail/ssrc0604hx/5204650相关文章推荐
- 【swing开发杂谈】1.美化并在cmd环境下运行你的swing程序
- 【swing开发杂谈】1.美化并在cmd环境下运行你的swing程序
- Android开发环境搭建:SDK在线离线安装+在Eclipse中配置ADT+第一个Android程序运行
- 关于双核开发环境的程序无法运行的分析方法(ti的双核)
- 转:WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法
- XShell上配置java开发环境、运行java程序
- WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法
- GNU/Linux平台的C程序开发及程序运行环境
- 如何实现.net下开发的程序脱离.net环境运行并且可以跨平台的想法
- 在VB和VB.NET程序中判断当前是否运行于开发环境中
- WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法
- Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助。 1、Cocoa是什么? Cocoa是OS X和 iOS操作系统的程序的运行环境。 是什么因素使一个程序成为Co
- C#与.NET程序员面试宝典 2.2.6 面试题13:.NET程序的开发和运行基本环境是什么
- eclipse中配置hadoop开发环境-----删除之前版本的hadoop插件、编译hadoop eclipse插件、安装插件、eclipse下运行hadoop程序
- Android开发环境搭建:SDK在线离线安装+在Eclipse中配置ADT+第一个Android程序运行
- GNU/Linux平台的C程序开发及程序运行环境
- ubuntu系统下eclipse配置hadoop开发环境并运行wordcount程序
- 第二章Java程序开发与运行环境
- 正在学习 android 开发,开发环境已搭建完毕,第一个测试程序已在模拟器上运行成功。
- 配置android开发环境至运行第一个程序