`
ssrc0604hx
  • 浏览: 8974 次
文章分类
社区版块
存档分类
最新评论

【swing开发杂谈】1.美化并在cmd环境下运行你的swing程序

 
阅读更多

序言


好久没有写swing的应用(最后的一个是大二的课程设计=.=),最近又重新搞了一下,感觉很好,表示很喜欢。很多人觉得swing做程序不给力,又难看,其实swing还是很有效率的,稍微设置一下就可以使用系统自带的样式和字体,看上去不丑。

下面,我就用一个实际的例子说一下我使用swing的心得体会。


软件功能

此软件就叫netHelper

实例中的程序有以下功能:

1.获取远程的html代码

用户输入网址,然后获取这个地址的html代码并显示,这个纯粹是一个演示的功能。。。

2.http post测试

使用httppost数据到服务器


目录如下:



好吧,让我们开始吧!


1.对swing程序进行美化

刚刚开始用swing的时候,觉得swing的界面很是复古,字体也是很模糊的样子,其他swing是可以使用系统的外观的,那么看上去就跟系统的界面差不多了。

下面是初版本的netHelper的运行效果(使用系统默认的外观与字体):



对比一下swing原始的效果:



主要看字体,还有按钮的外观,很明显。

而其中主要是两段代码在起作用:

/**
 * 设置字体,使用系统默认,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作一个常规的设置

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 接口,此接口有一个方法:

public void actionPerformed(ActionEvent arg0) {

}

在MainFrame中有如下实现:

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,然后:


然后:


两个都是可以的,我一般用第二个,这样用到的额外包会以jar文件的形式放到你的jar包中,而第一个就是会解压额外包的class到你的jar中,这样你的jar中就很多package了,很乱。

我选择用批处理的方法运行我的程序,因为是java程序,还是要一个JRE,以上是我的run.bat文件:

#首先设置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窗口美化包.zip

    在默认情况下,Swing组件的外观可能相对朴素,但通过引入第三方库,如BeautyEye、Substance和JTattoo,开发者能够轻松地提升Swing应用的视觉吸引力和用户体验。 BeautyEye是一个专注于Java Swing UI美化的设计框架...

    swing界面开发rt.jar

    rt.jar swing界面开发rt.jar swing界面开发rt.jar swing界面开发rt.jar swing界面开发rt.jar swing界面开发

    swing界面美化包

    1. **加载自定义LookAndFeel**: 首先,你需要创建一个实现LookAndFeel接口的新类,或者从已有的LookAndFeel类(如 javax.swing.plaf.LookAndFeel)派生。然后,你可以覆盖其方法以实现自己的绘图逻辑。 2. **注册...

    java swing扫雷小游戏.zip

    java swing扫雷小游戏.zipjava swing扫雷小游戏.zipjava swing扫雷小游戏.zip java swing扫雷小游戏.zipjava swing扫雷小游戏.zipjava swing扫雷小游戏.zip java swing扫雷小游戏.zipjava swing扫雷小游戏.zipjava ...

    基于Java Swing的贪吃蛇游戏.zip

    基于Java Swing的贪吃蛇游戏.zip基于Java Swing的贪吃蛇游戏.zip 基于Java Swing的贪吃蛇游戏.zip基于Java Swing的贪吃蛇游戏.zip 基于Java Swing的贪吃蛇游戏.zip基于Java Swing的贪吃蛇游戏.zip 基于Java Swing的...

    基于java的开发源码-swing-explorer(Swing开发辅助工具).zip

    基于java的开发源码-swing-explorer(Swing开发辅助工具).zip 基于java的开发源码-swing-explorer(Swing开发辅助工具).zip 基于java的开发源码-swing-explorer(Swing开发辅助工具).zip 基于java的开发源码-swing-...

    【教程】100个Java GUI swing的小程序.rar

    - javax.swing.SwingApplication和javax.swing.SwingApplicationFrame:简化创建Swing应用程序的流程。 9. **示例程序的意义** - 通过实践这些小程序,你可以学习如何创建基本的窗口,添加组件,设置布局,处理...

    基于 java swing 开发的资源管理器。使用 java swing 美化包beautyeye对原生的 java.zip

    它提供了多种主题,包括Windows、Mac OS X等操作系统的风格,让Swing应用在不同环境下都有良好的表现。BeautyEye通过自定义的L&F(LookAndFeel)实现组件的美化,如窗口边框、按钮样式、菜单设计等。 3. **资源管理...

    精通java-swing开发.doc

    - `javax.swing.plaf`:(Pluggable Look and Feel)提供了可插入的外观接口,允许用户更换应用程序的视觉风格。 - `javax.swing.plaf.basic`:基本的外观实现。 - `javax.swing.plaf.metal`:Metal外观,是Java...

    Java Swing 界面美化包-含源码

    为了解决这个问题,开发人员通常会寻找第三方库来美化 Swing 应用程序的界面,让它们看起来更加现代和专业。 "Java Swing 界面美化包-含源码" 就是这样一种解决方案,它专门用于提升 Swing 应用程序的外观。这个包...

    Swing程序设计文件.pdf

    * Swing 组件来自 java.awt 包,是轻量级组件,完全由 Java 语言编写,可以在任何平台上运行。 * Swing 组件允许编程人员在跨平台时指定统一的外观和风格。 二、Swing 组件 * 组件是指以图形化的方式显示在屏幕上...

    swing开发杂谈--初版本程序源码

    在"swing开发杂谈--初版本程序源码"中,可能包含了上述部分或全部知识点的实际应用,通过分析`netHelper`这个子文件夹,我们可以看到可能的网络辅助类或其他功能模块的实现。这个源码可能会演示如何使用Swing构建一...

    JavaSwing程序开发

    ### Java Swing程序开发详解 #### 一、引言 Swing是Java中用于构建图形用户界面(GUI)的一个组件集,它构建在Java的基础之上,并且提供了丰富的组件和强大的功能,使得开发者能够创建出美观且功能丰富的GUI应用。与...

    精通java swing程序设计.chm

    《精通Java Swing程序设计》这本书很可能深入探讨了Swing的各种特性和最佳实践,旨在帮助开发者提升在这一领域的专业技能。 Swing是Java AWT(Abstract Window Toolkit)的扩展,提供了更现代、可定制性更强的组件...

    swing 组件测试程序.rar_java Swing程序

    Java Swing是Java GUI(图形用户界面)开发的一个重要库,它是Java AWT(Abstract Window Toolkit)的扩展,提供了更丰富的组件和更好的可定制性。在本"swing 组件测试程序"中,我们可以深入理解Swing组件的基本用法...

    Java_Swing图形界面开发.ppt

    Java_Swing图形界面开发.pptJava_Swing图形界面开发.ppt

    javaSwing皮肤大全.rar

    Java Swing 是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件和工具,用于构建桌面应用程序。Swing 提供了一种可定制外观和感觉(LookAndFeel)的方法,使得开发者可以改变应用的视觉风格,以满足不同用户...

    java课程设计界面美化包,swing也可以这么漂亮

    1. 引入Substance库:在项目中导入substance.jar,确保库能在运行时被正确引用。 2. 加载皮肤:Substance库提供了一系列预定义的主题,比如BusinessBlackSteel、CremeBrulee等。可以通过调用`SubstanceLookAndFeel....

Global site tag (gtag.js) - Google Analytics