Проводник с помощью Java - как это сделать?

Я настроен на создание проводника с помощью Java. Цель состоит в том, чтобы эмулировать поведение проводника по умолчанию как можно ближе, независимо от базовой ОС.

Я не делал программирования GUI на Java.

Я просмотрел Swing, SWT и JFace, и я начинаю свой проект с этого урока: http://www.ibm.com/developerworks/opensource/library/os-ecgui1/

Я хотел бы знать Ваше мнение о лучший подход чтобы решить эту проблему. Если бы вы могли прокомментировать сложность кодирования, переносимость и независимость ОС и эффективность, было бы здорово.

есть что-нибудь еще, что я должен знать? Существуют ли другие способы?

Спасибо большое!


Спасибо за ответы и ответы.

похоже, я выберу Swing для реализации проводника файлов. Что меня пугает, так это мысль о том, что не будет ничего, чтобы имитировать проводник по умолчанию вид... Просьба представить некоторые указатели о нем? Получить список файлов, получить значки, а затем расположить их в сетке на экране, чтобы показать вид проводника по умолчанию?

2 ответов


вам было бы лучше использовать Swing. Вам нужны разные версии SWT и JFace для разных операционных систем.

лучший подход, чтобы начать с простого, и добавить к тому, что у вас есть, как вы узнаете больше.

чтобы начать работу, вам нужен JFrame с двумя детьми JPanel.

вам нужно добавить JMenuBar в JFrame. Элементы JMenu добавляются в JMenuBar. Элементы JMenuItem добавляются в JMenu.

Oracle качели Обзор поможет вам добавить больше компонентов Swing в ваш проект.


Я бы начал с как использовать выбор файлов, но например в org.netbeans.swing.outline.Outline обсуждали здесь, является привлекательным.

добавление: @Gilbert Le Blanc поднимает превосходный пункт о легкости & удобоносимости качания. Напротив, 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);
    }
}