我正在使用Eclipse开发SWT应用程序.以下代码在Windows上有效,但在Macintosh上无效:
<code>import javax.swing.JFileChooser;
public class Test {
public static void main(String[] args) {
final JFileChooser fc = new JFileChooser();
int ret = fc.showOpenDialog(null);
System.out.println("ret = " + ret);
}
}
</code>
进入showOpenDialog后,Mac光标将永远旋转,并且在Java控制台中得到以下信息:
<code>2013-09-05 08:20:40.568 java[1271:707] [Java CocoaComponent compatibility mode]: Enabled 2013-09-05 08:20:40.569 java[1271:707] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000 2013-09-05 08:20:41.227 java[1271:dd03] *** -[NSConditionLock unlock]: lock (<NSConditionLock: 0x7fa211e82600> '(null)') unlocked when not locked 2013-09-05 08:20:41.227 java[1271:dd03] *** Break on _NSLockError() to debug. </code>
我尝试过Java 1.6,Java 1.7.我尝试设置
-Dcom.apple.awt.CocoaComponent.CompatibilityMode = false -XstartOnFirstThread
但这没有效果.
这一定是非常基本的东西.我想念什么?
解决方法:
祝大家有同样的问题!
也许我来不及回答这个问题,但它可能会帮助遇到此问题的人.
经过研究后,我尝试使用LookAndFeel.然后,我尝试在打开“ showSaveDialog()”时更改外观,感觉似乎可行.我不能保证它会100%地起作用,但是到现在为止,它对我来说还不错(“未成功挂起:)”).如果失败,请再次报告错误:)这是我的代码:
//更新:最好在Mac OS X中使用FileDialogg
<code>private File saveFile() {
String osName = System.getProperty("os.name");
String homeDir = System.getProperty("user.home");
File selectedPath = null;
if (osName.equals("Mac OS X")) {
System.setProperty("apple.awt.fileDialogForDirectories", "true");
FileDialog fd = new FileDialog(f, "Choose a file", FileDialog.LOAD);
fd.setDirectory(homeDir);
fd.setVisible(true);
String filename = fd.getDirectory();
selectedPath = new File(filename);
if (filename == null) {
System.out.println("You cancelled the choice");
} else {
System.out.println("You chose " + filename);
}
System.setProperty("apple.awt.fileDialogForDirectories", "true");
} else {
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fc.setCurrentDirectory(new File(homeDir));
fc.setAcceptAllFileFilterUsed(false);
fc.showOpenDialog(null);
selectedPath = fc.getSelectedFile();
}
return selectedPath;
}
</code>
代码不是完美的,但你明白了:)
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!