我正在使用用于GUI呈现的Eclipse SWT库为桌面编写Java应用程序。 我认为SWT帮助Java克服了桌面接受的最大障碍:即为Java应用程序提供一致的响应式界面,看起来像属于桌面上的任何其他应用程序。 但是,我觉得打包应用程序仍然是一个问题。 OS X原生地提供了一个简单的机制来将Java应用程序包装在本地应用程序包中,但是为Windows / Linux生成一个不需要用户运行难看的batch file或者单击.jar的应用程序仍然是一件麻烦事。 可能这在Linux上不是这样的问题,用户可能会更熟悉一些技术,但是在Windows上,我希望有一个经常运行的.exe文件。 有没有人有任何经验的任何用于Java的.exe生成工具? 我试过JSmooth,但有它的各种问题。 有没有更好的解决scheme之前,我打开了Visual Studio,并推出自己的? 编辑:我也许应该提到,我无法在商业解决scheme上花费很多钱。
我的应用程序抛出下面的exception。 线程“main”中的exceptionjava.lang.UnsatisfiedLinkError:无法在64位JVM上加载32位SW T库。 如何解决这个问题? 什么是需要的jar文件的名称?
我已经使用Swing和MigLayout构build了一个GUI。 我在Windows 7旗舰版上使用Eclipse 4.2.2(64位)。 每次我点击回窗口编辑我的代码,popup窗口,然后提示我重新启动Eclipse,事件日志说明如下: org.eclipse.swt.SWTError: No more handles at org.eclipse.swt.SWT.error(SWT.java:4387) at org.eclipse.swt.SWT.error(SWT.java:4276) at org.eclipse.swt.SWT.error(SWT.java:4247) at org.eclipse.swt.widgets.Widget.error(Widget.java:468) at org.eclipse.swt.widgets.Control.createHandle(Control.java:704) at org.eclipse.swt.widgets.Label.createHandle(Label.java:199) at org.eclipse.swt.widgets.Control.createWidget(Control.java:744) at org.eclipse.swt.widgets.Control.<init>(Control.java:112) at org.eclipse.swt.widgets.Label.<init>(Label.java:101) … 我附上错误消息的截图。 有没有其他人遇到与Eclipse的这个错误? 你知道一个解决方法或修复吗?
当一个Java虚拟机崩溃与一个EXCEPTION_ACCESS_VIOLATION并产生一个hs_err_pidXXX.log文件,这是什么表明? 错误本身基本上是一个空指针exception。 它是否总是由JVM中的错误引起的,还是有其他原因,例如硬件或软件故障冲突? 编辑:有一个本地组件,这是一个在Win32上的SWT应用程序。
我是一名Web开发人员,正在考虑构build我的第一个真正的桌面应用程序。 这个想法是构build一个工具,在没有API可用的Web应用程序中自动执行一个非常重复的任务。 我知道我想用Java。 我之前用过网页的东西,知道的语法相当好,希望应用程序尽可能简单地交叉平台。 我不太确定的是,如果我应该使用SWT或Swing。 由于我的主要用户使用Windows,我想尽可能在本地查看它。 Linux和Mac应该可以工作,但在这里看起来并不那么重要。 那么对于每个UI框架,Swing或SWT,争论和反对的是什么呢? 谢谢。 PS:我使用Eclipse在Windows上开发。 但是正在考虑与Netbeans玩。
到目前为止,我在Java中有一个简单的Java SWT应用程序,但奇怪的是,当我尝试在侦听由我自己的类之一触发的事件时启动messagebox / alert框时,出现“无效的线程访问”错误。 我的类事件被触发,并听到主类,但它是必须显示“无效的线程访问”错误出现的消息框。 我试图在一个函数中显示MessageBox,这个函数由所有其他代码组成,这些代码将创buildSWT GUI。 这是函数的样子: public void createContents() { Shell shell = new Shell(); //…..all the SWT GUI codes…. MessageBox msg = new MessageBox(shell, SWT.OK); myClass.addEventListener(new MyClassEventClassListener() { @Override public void myClassEventHandler(MyClassEvent e) { msg.setText("Hello"); msg.setMessage("Event fired!"); int result = msg.open(); } }); } 这些是课堂上的辅助function。 <!– language: lang-java –> protected static Shell […]
我想在Java GUI中显示一棵树,但我不知道如何。 树代表连接节点的graphics,如下所示: 我应该说,我有我自己的树类: public class BinaryTree { private BinaryNode root; public BinaryTree( ) { root = null; } public BinaryTree( Object rootItem ) { root = new BinaryNode( rootItem, null, null ); } public BinaryTree( Object rootItem,BinaryNode a,BinaryNode b ) { root = new BinaryNode( rootItem, a, b ); } public int leavesCount(){ return […]
java中有相当多的GUI框架,但是被认为是今天的框架呢? 以下是我对不同框架的理解,如果我错了,请纠正我。 这是一个非常松散的问题,但我仍然认为它对任何想创build丰富的gui应用程序的人都有价值。 AWT 是摆动的基础,它performance良好,但缺乏先进的组件。 如果你打算创build丰富的应用程序,AWT可能不是要走的路。 但是对于不需要丰富的用户界面的较小的gui应用程序。 这可能是完美的,因为它是一个久经考验的框架。 摇摆 如前所述基于AWT。 在起步阶段,它被认为是缓慢和错误的,并导致IBM为Eclipse创buildSWT。 然而,Java 5(或6?)Swing成为构build新应用程序的首选框架。 Swing有很多丰富的组件,但在某些领域仍然缺乏。 一个例子是没有一个全function的TreeTable组件可以进行sorting和过滤/search。 SWT 由IBM为Eclipse创build,他们似乎认为Swing当时不适合Eclipse。 本身是相当低级的,它通过JNI使用平台的本地小部件。 这与Swing和AWT无关。 他们的API有点笨重,不直观。 他们有一些像TreeTable一样的高级组件。 (但我不认为他们支持sorting和过滤框)。 SWT使用一些本地绑定(通过JNI?),互联网上的咆哮是这个框架不应该在今天的项目中使用。 (为什么不?) SwingX 基于Swing,它的使命是创build丰富的组件。 还在开发中。 (虽然不是非常活跃)。有一组非常好的组件,例如TreeTable。 但据我所知,TreeTable不支持过滤和sorting。 但是它支持高亮显示。 请注意,SwingX是组件(AFAIU),是现有Swing组件的扩展或组合 JGoodies数据 一个我一无所知的框架…它的优点和缺点是什么? 其余的Jgoodies是什么? JGoodies OTOH是关于PLAF和布局。 JavaFX的 Java / Oracle的最新旗舰。 很有希望成为开发富桌面或Web应用程序的事实标准。 Apache枢轴 它使用Java2D呈现UI,从而最大限度地减lessSwing和AWT(IMO,膨胀)遗留的影响。 (@Augustus Thoo) 它的主要重点似乎是RIA(富互联网应用程序),但它似乎也可以应用于桌面应用程序。 作为个人评论,看起来很有趣! 我特别喜欢这是一个Apache项目。 https://cwiki.apache.org/PIVOT/frequently-asked-questions-faq.html Qt Jambi 用c / c ++编写的java本地包装器。 […]
我买了一个包含JAR文件和两个DLL文件的第三方Java库。 我编写了自己的调用第三方JAR文件的Java程序。 现在我的问题是如何将所有代码打包到一个包含我所有代码和第三方JAR和DLL的JAR文件中? 我知道SWT就是这样的情况。 swt.jar包括dll文件,但我不知道如何做到这一点,以及如何使其正常工作。
我已经使用SWT编写了一个Java GUI。 我使用ANT脚本打包应用程序(以下片段)。 <jar destfile="./build/jars/swtgui.jar" filesetmanifest="mergewithoutmain"> <manifest> <attribute name="Main-Class" value="org.swtgui.MainGui" /> <attribute name="Class-Path" value="." /> </manifest> <fileset dir="./build/classes" includes="**/*.class" /> <zipfileset excludes="META-INF/*.SF" src="lib/org.eclipse.swt.win32.win32.x86_3.5.2.v3557f.jar" /> </jar> 这产生了一个单一的jar在Windows上,我只需双击运行我的GUI。 缺点是我不得不明确包装窗口SWT包到我的jar子里。 我希望能够在其他平台(主要是Linux和OS X)上运行我的应用程序。 最简单的方法是创build平台特定的jar包,将相应的SWT文件打包成单独的JAR文件。 有没有更好的方法来做到这一点? 是否可以创build一个可以在多个平台上运行的JAR?