Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让java应用程序在windows上看起来是本机的?_Java_Windows_User Interface_Scala - Fatal编程技术网

如何让java应用程序在windows上看起来是本机的?

如何让java应用程序在windows上看起来是本机的?,java,windows,user-interface,scala,Java,Windows,User Interface,Scala,是否可以使用Java创建在Windows上看起来本机的应用程序?我不在乎这个解决方案是否可移植,因为我只计划针对windows用户。我正在使用Scala,如果这很重要的话 很抱歉,没有提供详细信息,但我以前从未使用过Java,所以我甚至不确定这是否可行。是的,Java在Windows上确实具有Windows本机的外观和感觉。看看如何改变你的外观和感觉,这应该把你带向正确的方向 try { // Set the Look and Feel of the application to the

是否可以使用Java创建在Windows上看起来本机的应用程序?我不在乎这个解决方案是否可移植,因为我只计划针对windows用户。我正在使用Scala,如果这很重要的话


很抱歉,没有提供详细信息,但我以前从未使用过Java,所以我甚至不确定这是否可行。

是的,Java在Windows上确实具有Windows本机的外观和感觉。看看如何改变你的外观和感觉,这应该把你带向正确的方向

try {
    // Set the Look and Feel of the application to the operating
    // system's look and feel.
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (ClassNotFoundException e) {
}
catch (InstantiationException e) {
}
catch (IllegalAccessException e) {
}
catch (UnsupportedLookAndFeelException e) {
}
这应该将外观设置为系统外观。您可以在编写任何GUI代码之前执行此操作。例如,在
main
方法中


如果您想了解更多有关外观和手感的信息,我将查看,。

您可以执行以下操作:

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
(这当然只适用于Windows。)结果看起来和感觉都相当自然。更多信息,例如…

请参见此处:


你必须使用Windows的外观和感觉

可以在命令行中指定它:

java -Dswing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel MyApp
还是用代码

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

以下是详细信息:

您应该使用本机

其他人都发布了Swing内容,所以我将扮演魔鬼代言人并提及

SWT是Eclipse基金会生成的一个工具工具包。它是系统本机GUI上的一个薄包装器。。。适用于Windows、OSX和各种风格的*nix(Linux、AIX、BSDs?)等


这是太阳所走的相反的路线,它绘制自己的组件。

奇怪的是,还没有人提到

JGoodies Windows外观侧重于在Windows 95/98/NT/ME/2000上进行以下方面的精确模拟:菜单、图标、颜色、边框、字体、字体大小、插图和小部件尺寸。它采用屏幕分辨率(96dpi与120dpi)来调整大小、插入和小部件尺寸。()


这只适用于Windows。如果您在不同的系统上,将抛出一个
不受支持的ookandfeelexception
。请注意,OP说“我只计划针对windows用户”。是的,我确实省略了试捕,把注意力集中在要点上。(这是一个经过检查的异常,所以编译器会提醒那些从实际代码中忘记它的人:)我很好奇,在Eclipse RCP开发之外,使用SWT比Swing有什么好处。我相信大多数操作系统都包含在UIManager.getSystemLookAndFeelClassName()中,那么我为什么要为此目的引入一个外部库呢?我还没有做过很多桌面应用程序开发,但是它的主要优点是使用操作系统的本机渲染库,而不是像Swing那样绘制自己的组件?它附带了Swing特有的所有bug,没有任何特定于每个操作系统的优点。当您使用SWT时,您可以最佳地利用OS GUI功能,并且您的应用程序“看起来”不像它们属于OS。它们属于操作系统。嗯,让我看看。我可以使用Swing,它完全试图伪装成一个本地出现的小部件,但从来没有完全正确地工作过,有时甚至工作不正常。它通常看起来像是本机操作系统的最后一个版本,除非它看起来像过去的两个版本。或者,我可以使用SWT,这将是一个多么神奇的想法,实际上称之为本机小部件,它更快、更可靠,符合用户的期望,并且总是看起来与正在运行的操作系统版本一模一样,因为它是正在运行的操作系统版本。在.NET中开发它们?对不起,我无法抗拒我同意本地控制很重要。每个成功的主流应用程序都使用了本机控件。您有两种选择(1)使用像Swing这样的小部件集,试图伪造本地外观。这永远不会完全奏效,有时它是完全可怕的。(2) 使用像SWT这样的小部件集,它是本地小部件(大部分)的Java包装器。这很好用。核心发行版中缺少像SWT这样的包是Java在客户机上注定失败的原因。(是的,我知道Java在服务器和一些企业台式机上取得了巨大的成功。)这个答案暗示了使用Swing进行控制。这是传统的Java智慧和官方的Sun软件包,没有人会因为建议它而受到指责。但是,您将无法获得本机控件,并且伪造的控件不会欺骗任何人。当Eclipse向Sun免费提供SWT时,Sun应该已经接受了它。事实上,Sun只提供不适合桌面客户端应用程序的小部件(Swing和AWT),因此它们几乎没有,而且除了让Swing一瘸一拐地运行之外,Swing似乎有所下降。我使用Swing,我被“伪造的”控件愚弄了。解释一下如果你使用这段代码,Swing的外观和行为与Windows不一样。事实上,它在Mac电脑上非常糟糕。@Thomas Owens,好的,Windows上的文件选择器怎么样。它看起来不同,键盘焦点是否不同,创建目录的方式是否相同,是否将cd刻录到已创建的目录,是否在键入return而不是输入所选目录时选择文件,选择是否不同,是否不考虑系统字体配置,而且没有遵循系统图标惯例。DigitalRoss:当你使用系统外观时,我看不出两者之间有什么区别。
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());