8

Javaを使用してファイルエクスプローラーを作成するように設定されています。目的は、基盤となるOSが何であれ、デフォルトのエクスプローラーの動作を可能な限りエミュレートすることです。

私はJavaでGUIプログラミングをしていません。

Swing、SWT、およびJFaceを検索し、次のチュートリアルからプロジェクトを開始しています: http ://www.ibm.com/developerworks/opensource/library/os-ecgui1/

この問題に取り組むための最善のアプローチについて、あなたの意見をお聞かせください。コーディングの複雑さ、移植性とOSに依存しないこと、そして効率性についてコメントできれば、それは素晴らしいことです。

他に知っておくべきことはありますか?他にいくつかの方法がありますか?

どうもありがとう!


回答と返信をありがとう。

ファイルエクスプローラーを実装するためにSwingを選択するようです。私にゾッとさせるのは、デフォルトのエクスプローラービューを模倣するものは何もないだろうという考えです...それについていくつかのポインタを提供していただけますか?ファイルのリストを取得し、アイコンを取得してから、それらを画面上にグリッド状に配置して、デフォルトのエクスプローラービューを表示しますか?

4

2 に答える 2

6

Swingを使用したほうがよいでしょう。オペレーティングシステムごとに異なるバージョンのSWTとJFaceが必要です。

最善のアプローチは、単純なものから始めて、さらに学習するにつれて、持っているものに追加することです。

開始するには、2つのJPanelの子を持つJFrameが必要です。

JMenuBarをJFrameに追加する必要があります。JMenuアイテムがJMenuBarに追加されます。JMenuItemアイテムがJMenuに追加されます。

OracleのSwingの概要は、プロジェクトにSwingコンポーネントを追加するのに役立ちます。

于 2010-05-26T16:10:54.217 に答える
4

ファイルチューザーの使用方法から始めますが、ここ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);
    }
}
于 2010-05-26T16:09:56.743 に答える