Проводник с помощью 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);
}
}