Я установлен создать файловый менеджер с помощью Java. Цель состоит в том, чтобы эмулировать поведение проводника по умолчанию максимально тесно, независимо от того, что может быть базовой ОС.
Я не сделал НИКАКОГО программирования GUI в Java.
Я посмотрел Swing, SWT и JFace, и я начинаю свой проект с этого учебного руководства: http://www.ibm.com/developerworks/opensource/library/os-ecgui1/
Я хотел бы знать, что Ваши мнения о лучшем подходе занимаются этой проблемой. Если бы Вы могли бы прокомментировать сложность кодирования, мобильности и независимости ОС и эффективности, это было бы большим.
Есть ли что-либо еще, что я должен знать? Некоторые другие пути существуют?
Большое спасибо!
Спасибо за ответы и ответы.
Похож я выберу Swing для реализации файлового менеджера. Что дает мне, сползания являются мыслью, что не было бы ничего для имитации представления проводника по умолчанию... Вы могли обеспечить некоторые указатели об этом? Я получаю список файлов, получаю значки и затем располагаю их способом сетки на экране для показа представления проводника по умолчанию?
Вам лучше использовать Swing. Вам нужны разные версии SWT и JFace для разных операционных систем.
Лучший подход - начать с простого и добавлять к тому, что у вас есть, по мере того, как вы узнаете больше.
Для начала вам понадобится JFrame с двумя дочерними элементами JPanel.
Вам нужно добавить JMenuBar в JFrame. Элементы JMenu добавляются в JMenuBar. Элементы JMenuItem добавляются в JMenu.
Обзор Oracle Swing поможет вам добавить больше компонентов Swing в ваш проект.
Я бы начал с How to Use File Choosers, но пример в 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);
}
}