使用Java的文件资源管理器 – 如何去做?

我将设置使用Java创建文件资源管理器。 目的是尽可能地模拟默认资源管理器的行为,无论底层操作系统是什么。

我在Java中没有做过GUI编程。

我查找了Swing,SWT和JFace,我正在使用本教程开始我的项目: http : //www.ibm.com/developerworks/opensource/library/os-ecgui1/

我想知道您对解决这个问题的最佳方法的看法。 如果您可以评论编码的复杂性,可移植性和操作系统独立性以及效率,那就太棒了。

还有什么我应该知道的吗? 还有其他方法吗?

非常感谢!


感谢您的回答和回复。

看起来我会选择Swing来实现文件浏览器。 是什么给了我毛骨悚然的想法,没有什么可以模仿默认的资源管理器视图…你能提供一些关于它的指示吗? 我是否获取文件列表,获取图标,然后在屏幕上以网格方式排列它们以显示默认的资源管理器视图?

你最好使用Swing。 对于不同的操作系统,您需要不同版本的SWT和JFace。

最好的方法是从简单开始,并在您了解更多内容时添加到您拥有的内容中。

为了帮助您入门,您需要一个带有两个JPanel子项的JFrame。

您需要将JMenuBar添加到JFrame。 JMenu项目被添加到JMenuBar。 JMenuItem项目被添加到JMenu。

Oracle的Swing Overview将帮助您为项目添加更多Swing组件。

我将从如何使用文件选择器开始 ,但这里讨论的org.netbeans.swing.outline.Outline的示例很有吸引力。

附录:@Gilbert Le Blanc对Swing的易用性和可移植性提出了一个很好的观点。 相比之下,SWT需要更多的部署工作,但有些用户更喜欢org.eclipse.swt.widgets.FileDialog的更高保真度,如此处所示。

附录:我注意到FileDialog显示了一个更具原生性的窗口,如此处所示。 您可以在目标平台上尝试它。

 import java.awt.*; import java.awt.event.*; import javax.swing.*; /** @see https://stackoverflow.com/questions/2914733 */ public class FileDialogTest { public static void main(String[] args) { final JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new GridLayout(0, 1)); frame.add(new JButton(new AbstractAction("Load") { @Override public void actionPerformed(ActionEvent e) { FileDialog fd = new FileDialog(frame, "Test", FileDialog.LOAD); fd.setVisible(true); System.out.println(fd.getFile()); } })); frame.add(new JButton(new AbstractAction("Save") { @Override public void actionPerformed(ActionEvent e) { FileDialog fd = new FileDialog(frame, "Test", FileDialog.SAVE); fd.setVisible(true); System.out.println(fd.getFile()); } })); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }