如何可以把Java的窗体做的和c#一样美

如何可以把Java的窗体做的和c#一样美,第1张

你要使用Java做窗体界面,那就是用SWT包呗,但是目前基本上淘汰的技术了,不过你要想做,可以到网上找一些更换皮肤的jar包,就类似于C#的换肤控件。 没有什么做不到的样式,只要能想到,用Java和C#做界面说到底都是通过其提供的类或接口去调用系统底层的显卡驱动程序提供的接口,说白了就是调用同一个汇编或C语言文件,既然这样,实现的效果都是互通的。 不过论方便程度,我还是比较喜欢用C# Winform技术,Java嘛,还是做网站吧。

采纳哦

注册一个shell的control事件,我记得是addcontrollistener,里面可以监听到shell的size的变化,然后你再根据size去设置你的背景大小,就可以了,不过我感觉效果不是很理想。因为swt这东西,对图层的渲染能力不强,所以有可能会出现有锯齿的情况。

教程(转)411 SWT

在eclipse的plugins目录下,找到文件orgeclipseswtwin32win32x86_321v3235jar,文件名中中321是eclipse的版本号,v3235是SWT的序列号,不同的eclipse版本这两个数字也不同。在DOS状态下,用jar命令将该文件解压,命令格式如下:

jar xf orgeclipseswtwin32win32x86_321v3235jar

该命令将指定的文件orgeclipseswtwin32win32x86_321v3235jar解压到当前目录下。解压后得到四个DLL文件:swt-win32-3235dll,swt-awt-win32-3235dll,swt-gdip-win32-3235dll和swt-wgl-win32-3235dll。这四个文件就是SWT的原生库文件。原生库文件为SWT通过JNI访问windows本地API提供了接口,为使Java程序在启动时能够访问这些文件,可以通过以下方法进行设置:

方法一:将这四个DLL文件复制到jre的bin目录下。

方法二:设置环境变量,在PATH中加入这几个dll文件所在的目录。

方法三:在eclipse的Java项目中导入原生库文件。 *** 作方法是:

在eclipse的包资源管理器中,右单击项目名→导入→常规→文件系统→下一步→浏览→选择DLL文件所在目录→确定→勾选DLL文件→完成。

导入SWT的原生库文件后,还要在eclipse的Java项目中配置构建路径,添加外部JAR,将文件orgeclipseswtwin32win32x86_321v3235jar加入到项目中, *** 作方法是:

在eclipse的包资源管理器中,右单击项目名→构建路径→配置构建路径→库(L)→添加外部JAR→在eclipse的plugins文件夹中找到该jar文件→打开→确定。

例41 在Java应用程序中使用SWT的组件。

*** 作步骤:

① 新建一个Java项目,项目名为:sample4_1。

② 采用方法三在项目中导入原生库文件。

③ 配置构建路径,将orgeclipseswtwin32win32x86_321v3235jar加入到项目中。eclipse包资源管理器可以看到导入的原生库文件和引入的jar文件,如图42所示。

④ 在项目中新建一个类,文件名为HelloSWTjava。

⑤ 在类文件中写入代码。

图42 包资源管理器 图43 程序运行结果

HelloSWTjava文件内容如下:

package educh4;

import orgeclipseswtSWT;

import orgeclipseswtwidgetsDisplay;

import orgeclipseswtwidgetsText;

import orgeclipseswtwidgetsShell;

import orgeclipseswtgraphics;

class HelloSWT {

public static void main(String[] args) {

Display display=new Display();//创建一个display对象。

Shell shell=new Shell(display);//shell是程序的主窗体

shellsetLayout(null); //设置shell的布局方式

Text hello=new Text(shell,SWTMULTI); //声明一个可以显示多行信息的文本框

shellsetText("Java应用程序"); //设置主窗体的标题

shellsetSize(200,100); //设置主窗体的大小

Color color=new Color(DisplaygetCurrent(),255,255,255);//声明颜色对象

shellsetBackground(color); //设置窗体的背景颜色

hellosetText("Hello, SWT World!\n\n你好,SWT世界!");//设置文本框信息

hellopack(); //自动调整文本框的大小

//shellpack(); //自动调整主窗体的大小

shellopen(); //打开主窗体

while(!shellisDisposed()){ //如果主窗体没有关闭则一直循环

if(!displayreadAndDispatch()){ //如果display不忙

displaysleep(); //休眠

}

}

displaydispose(); //销毁display

}

}

在包资源管理器中,右单击文件名HelloSWTjava→运行方式→Java应用程序,程序运行结果如图43所示。该窗体具有典型的Windows风格。

分析本例的源代码,可以看到,创建一个典型的SWT应用程序需要以下步骤:

①创建一个Display

②创建一个或多个Shell

③设置Shell的布局

④创建Shell中的组件

⑤用open()方法打开Shell窗体

⑥写一个事件转发循环

⑦销毁display

程序开发步骤

不管用什么,你可以在父窗体用一个属性控制子窗体的打开关闭。

子窗体打开,将属性记录,子窗体关闭,将关闭标志属性记录,

这样随时都可以判断目前父窗体的子窗体的状态。

当然你还可以记录得更复杂些,比如,当前一共打开多少,顺序如何,等等。。。。。

如果税务局要求我们交1000元的税,那么就要在税务报表上做200的税额,你的做法是对的。有2种方法:1、当月在会计报表中可以不做收入,但是在下月的税务报表中,在未开票收入要减200元,冲回原来的样子。2、在会计报表中做收入,这样就跟税务报表一样了,下月如果税务报表冲减200元,会计报表也跟着做相应的账务。

在地税方面就可以按实际缴纳附加税。我觉得你做的是对的

当Java在 年的春天第一次发布的时候 它包含了一个叫AWT(Abstract Windowing Toolkit)的库 用来构建图形用户界面应用程序 Java很有雄心的宣言-- write once run anywhere 许诺 一个具有下拉菜单 命令按钮 滚动条以及其他常见的GUI控件的应用程序将能够在各种 *** 作系统上运行而不必重新编译成针对某一平台的二进制代码 包括Microsoft Windows Sun s own Solaris Apple s Mac OS以及Linux

虽然最初Java是支持 *** 作系统独立的应用程序开发 在Java提出 write once run anywhere 宣言那段时间的革命导致了Java applet和主导桌面应用程序计划的产生

尽管从那以后大部分构建桌面应用程序的成就都慢慢衰退 Java构建图形用户界面的能力反倒增强了 跟踪Java GUI的发展和演化 我们将发现 个主要的构建窗口程序库:AWT Swing和SWT(Standard Widget Toolkit) 在这一章里我们将查看和分析这 个库中的每一个库 并且我们将一起来看一看第 个库--JFace 其实JFace不算一个真正的构建窗口程序库 而是在基于SWT之上的一个抽象层

AWT

很多围绕着介绍Java技术的令人激动的地方都基于applets--一个可以让程序通过Internet发布并在浏览器内执行的新技术 用户和开发人员都热衷于斯 因为applets许诺将简化跨平台应用程序的开发 维护和发布 而这是商业软件开发中几个最富挑战性的话题

为了方便用Java构建图形用户界面 Sun最初提供了一个在所有平台下具有的独特Java外观的图形界面库 Sun在applet技术策略方面的首要伙伴Netscape提出applets应该维持和运行时平台一样的外观 他们希望applets在某一平台下在显示和行为上能够像其他应用程序一样

为了实现Netscape的 本地外观 的目标 在JDK的第一个发布版中包含了AWT这个库 AWT的缺省实现使用了 对等 机制 即每一个Java GUI窗口部件都在底层的窗口系统中有一个对应的组件

例如 每一个java awt Button对象将在底层窗口系统中创建一个唯一对应的button 当用户点击那个按钮的时候 事件将从本地实现库传送到Java虚拟机里 并且最终传送到与java awt Button对象相关联的逻辑 对等系统的实现以及Java组件与对等组件之间的交流的实现都隐藏在底层JVM实现中 Java语言级的代码仍然跨平台

尽管如此 为了保持 write once run anywhere 的许诺 Java不得不妥协和折衷 特别的 Java采用了 最小公分母 的方法 即AWT仅仅提供所有本地窗口系统都提供的特性 这就需要开发人员为更多高级特性开发他们自己的高级窗口部件 然后提供给用户不同的使用体验

其他的问题也减缓了人们对applets的接受和承认 Applets运行在一个安全的 沙箱 里面并且能够阻止恶意的applets对文件系统 网络连接等资源的滥用 尽管沙箱提供了安全性 但它 了应用程序 毕竟一个应用程序不能运用一个网络连接来保存一个文件是不好的 Java GUI应用程序也不能像本地程序一样响应灵敏 这是在当前硬件平台和Java的解释性天性下预期结果

所以 用AWT开发的应用程序既缺少流行GUI程序的许多特性 又不能达到在显示和行为上像用本地窗口构建库开发的程序一样的目标 应该有一个更好的库来让Java GUI取得成功

Swing

于 年JavaOne大会上提出并在 年 月发布的JFC(Java Foundation Classes)包含了一个新的使用Java窗口开发包 这个新的GUI组件叫做Swing 感觉到它是对AWT的升级 并且看起来对Java占据计算机世界很有帮助 对Java来说已经万事具备了:可下载的applets将是未来的软件 人们将从其他 *** 作系统转向JavaOS 从传统的计算机转向叫做JavaStation的瘦客户端网络计算机 Microsoft将最终因为不能在桌面程序领域与之想抗衡而被废黜 虽然这些景象从来没有实现 Swing作为Java applets和applications的GUI库倒确实十分繁荣

Swing架构

尽管 Swing 仅仅是这个新组件的指代名称 它一直持续使用到今天 可能是因为这个名称太贴切了 Swing尝试着以以下几种方式改变公认的观点:

AWT依赖对等架构 用Java代码包装本地窗口部件 Swing却根本不使用本地代码和本地窗口部件

AWT把绘制屏幕交给本地窗口部件 Swing自己的组件绘制自己

因为Swing不依赖本地窗口部件 它可以抛弃AWT的最小公分母的方法并在每个平台下实现每个窗口部件 从而创建一个比AWT更强大的开发工具包

Swring缺省情况下采用本地平台的显示外观 然而 它并不仅仅限于此 而是还可以采用插件式的显示外观 因此Swing应用程序可以看起来想Windows应用程序 Motif应用程序 Mac应用程序甚至它自己的显示外观-- 金属 所以 Swing应用程序可以完全忽略它运行时所在的 *** 作系统环境并且仅仅看起来像自己 这是单调一致的桌面应用程序外观的一大挑衅 想象一下Swing有多傲慢!

尽管如此 Swing组件超越了简单的窗口部件 它体现了正不断出现的设计模式以及一些最佳实践 采用Swing 你不仅仅得到GUI窗口部件的句柄和它所包含的数据 而是定义一个模型去保存数据 定义一个视图去显示数据 定义一个控制器去响应用户输入 事实上 大部分Swing组件的构建是基于MVC(model view controller)模式的 MVC使应用程序开发变得更清晰 更易维护和管理

Swing的缺点

尽管Swing在AWT的基础上做出了巨大的改进 它仍然没能使Java作为构建桌面应用程序的工具 也许Swing的拥护者会立即举出Swing的成功应用案例 例如开源文本编辑器jEdit或者Borland的UML(Unified Modeling Language)建模工具Together 但是Swing应用程序仍然在桌面应用方面显得很少 Sun提出了一个记录可得到的Swing应用程序的列表 Swing Sightings 来证明Swing应用是值得注目的 然而我们也看到了 C++ Sightings 和 Visual Basic Sightings 的网页

为什么Swing没有履行它的诺言原因可能归结为下面两点:

速度的缺乏

界面外观

Swing的狂热者可能会对Swing速度慢这一点感到忿忿不平 不可否认 JIT(just in time)编译器 Java虚拟机以及Java语言本身就使得Swing应用程序和本地程序拉开了一定差距 尽管如此 Swing仍显得比本地应用程序行动缓慢和响应不积极 由于桌面计算变得越来越快 用户的速度期望值也随之增加 任何可感知的迟缓都将是无法忍受的

对Swing的显示外观的问题的抱怨也引起了Swing的开发者的愤怒 毕竟他么宣称Swing拥有各种可插入式的外观 并且事实上可以显示成任何样子 J SE 甚至添加了对Windows XP和GTK+的支持 以致于在这些平台下运行的Swing应用程序会自动采用该平台的外观

尽管如此 问题仍然存在:Swing将一直处于最新的图形用户界面的后面 因为必需在Java库里明确地添加对最新GUI的支持 当使用J SE 或更早的版本时在Windows XP上运行的Swing应用程序将显现为Windows 的外观 而且 当使用XP themes或WindowBlinds等软件来改变皮肤或图形外观时用户日益铭记他们自己的特征和个性 而Swing不仅不理会 *** 作系统 甚至连用户参数选择也不理会

简短的说 Swing应用程序不像本地应用程序一样执行 外观也不一样 Java要想摆脱常年以来处于不断学习中的地位并掌握桌面应用程序开发中的众多角色 它的GUI仍需要改进

SWT

当社区人员开始构建Eclipse时 他们意识到Swing和AWT都不足以用来构建真实世界的商业程序 结果 他们决定构建一套新的GUI开发工具包用来显示Eclipse界面 这个工具包借用了VisualAge SmallTalk中的大量的库 他们把这个新的工具包命名为SWT(Standard Widget Toolkit) 意识到本地行为需要本地窗口部件 SWT的设计者们采用了AWT的对等架构 而仅仅当本地组件不存在时(例如Motif下的树形组件)才求助于Java实现 这样 SWT吸收了AWT和Swing实现的最好的部分:当可以得到本地组件时使用本地实现 当不能得到本地组件时使用Java实现 这就同时保证了与本地窗口部件相当的外观和响应度

SWT于 年与Eclipse IDE(Integrated Development Environment)一起集成发布 在这个最初发布版之后 SWT发展和演化为一个独立的版本 它可以使用与众多 *** 作系统 包括Microsoft Windows Mac OS X以及几种不同风格的Unix等 写作本书的这个时候 当前官方发布版本为 版为beta版 现在也可以下载 本系列文章采用SWT

另一个重要的优势为SWT的源代码是在一个开源许可下免费可得并无病毒的 这就意味着你可以在你的应用程序中使用SWT并且在任何许可认证下发布它 源代码对理解SWT库的低级别功能性和调试应用程序都是很有帮助的 开源软件也意味着比商业发布软件更新的更加频繁

JFace

JFace的构建基于SWT 它提供了SWT的功能和更简易的MVC模式 SWT使用直接的API提供了原生的窗口部件 例如 你创建一个table部件并且插入你想显示的行和列的数据 JFace则提供了在SWT基础之上的抽象层 所以你可以对抽象层编程然后抽象层与SWT API交互来替代直接对SWT API编程 考虑一下对本地C窗口部件接口编程同使用C++GUI类库的区别或是使用AWT与Swing的区别 这些类比将有助于阐述SWT与JFace的区别 例如 为了使用JFace中的table 你仍旧创建table窗口部件 但是你不向里面插入数据 反而 你将你的content(或model) provider类和你的display(或 view) provider类提供给它 接着 table调用你提供的类来决定数据内容和怎样显示数据内容 JFace没有彻底地抽象SWT 即使在用JFace写的程序中也会常常出现SWT及它的低级API 在本文第二部分带领您构建正确的SWT基础之后 我们将在第三部分探究JFace的力量

总结

lishixinzhi/Article/program/Java/hx/201311/26708

窗体顶部菜可以在实例化的时候设置,也可以单独设置:Shell s = new Shell(parent,SWTBORDER); //建立一个有边框但没有标题栏的窗口 Shell dlgShell = new Shell(parent, SWTDIALOG_TRIM | SWTAPPLICATION_MODAL);

setShellStyle(这里可以任意设置样式);能够设置的样式如下:(以下属性可以多选,但是某些属性相冲突时会导致设置的其他属性失效)

SWTBORDER //建立一个有边框但没有标题栏的窗口

SWTCLOSE //建立一个只有关闭按钮的窗口

SWTMIN //建立一个不能最大化的窗口

SWTMAX, //建立一个可以最大化最小化的窗口

SWTNO_TRIM //建立一个没有任何边界和标题栏的窗口

SWTRESIZE //建立一个可以改变大小的窗口

SWTTITLE //建立一个没有标题栏图标,没有关闭按钮的窗口

SWTON_TOP //建立一个总是在上的窗口,注意:此属性最好与CLOSE、MIN、MAX一起使用。

SWTTOOL //建立一个类似工具栏的窗口

SWTAPPLICATION_MODAL //建立一个APPLICATION模态窗口

SWTMODELESS //建立一个非模态窗口

SWTPRIMARY_MODAL //建立一个PRIMARY模态窗口

SWTSYSTEM_MODAL //建立一个SYSTEM模态窗口 还有两个快捷属性来建立窗口

SHELL_TRIM //建立一个标准模式的窗口,相当于属性设置为CLOSE | TITLE | MIN | MAX | RESIZE

DIALOG_TRIM //建立一个对话框模式的窗口,相当于属性设置为TITLE | CLOSE | BORDER

以上就是关于如何可以把Java的窗体做的和c#一样美全部的内容,包括:如何可以把Java的窗体做的和c#一样美、SWT中背景图片怎样自适应、怎么在DOS状态下,用jar 命令将文件解压求具体方法!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9550132.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存