JavaFx jak wyświetlić pliki.

0

Witam, zacząłem uczyć się JavaFx, ale stanąłem na pewnym problemie. Chcę napisać przeglądarkę plików, po której można się poruszać i edytować pliki (kopiować, wklejać, przerzucać między oknami etc). W jaki sposób się do tego zabrać? Na załączonym zdjęciu widać o co dokładnie mi chodzi.

0

Wpisz w google "javafx file explorer" lub "javafx file browser" to się dokładnie dowiesz bo tyle co mogę ci powiedzieć to pobierasz listę plików z katalogu "C:" i wyświetlasz wszystko za pomocą buttonów

0

Poczytaj sobie o FXML. GUI możesz zrobić drag 'n dropem w SceneBuilderze. Co do wyświetlania to ja bym zrobił SplitPane z TableView po obu stronach. Coś takiego:
Zrzut ekranu 2016-07-25 10.46.19.png

0
jedrzej92 napisał(a):

W jaki sposób się do tego zabrać?

Po prostu się za to zabierz. Napisałeś przecież, że chcesz wyświetlać pliki oraz wykonywać na nich operacje z poziomu GUI programu. Tak wiec:

  • stwórz GUI, które pozwoli Ci osadzić pożądaną funkcjonalność w interfejsie użytkownika;
  • zaimplementuj tą funkcjonalność w kontrolerach powiązanych z GUI i klasach reprezentujących model danych;

Hmm... Nie wiem jak to inaczej ująć. Określiłeś przecież to co chcesz zrobić dość jasno. Teraz po prostu to zrób, a jak będziesz miał problemy z konkretnymi rzeczami, to daj znać.

0

Witam, powoli zabieram się za ten problem. Zacząłem od wyświetlenia plików w tabelce i dodaniu dwóch funkcji - otwarcie pliku oraz otwarcie i wyświetlenie folderu. Próbuję teraz napisać funkcję powrotu do folderu rodzinnego, niestety nie wiem jak za to się zabrać. Myślałem o tym, by do pierwszej pozycji w tabeli dodać ściężkę folderu parent i w taki sposób to rozwiązać, ale nie wiem w jaki sposób pobrać ściężkę tego folderu. Kod na dole:

package gui;
	
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;


public class Main extends Application {
	
	private Stage window;
	private TableView<File> table;
	private  TableColumn<File, String> pathColumn;
	private Button btnBack;
	@Override
	public void start(Stage primaryStage) {
		try {
		window = primaryStage;
		window.setTitle("FileExplorer");
		File dir = new File(System.getProperty("user.home") + "/Desktop");
		
		btnBack = new Button("back");
	/**
		TableColumn<File, String> nameColumn = new TableColumn<File, String>("Name");
		nameColumn.setMinWidth(400);
		nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
	**/	
		pathColumn = new TableColumn<File, String>("Path");
        pathColumn.setMinWidth(400);
        pathColumn.setCellValueFactory(new PropertyValueFactory<>("path"));

        table = new TableView<File>();
		table.getItems().addAll(dir.listFiles());
		table.getColumns().addAll(pathColumn);
	
		table.setOnMouseClicked(e-> {
			if(e.getClickCount() == 2 ){
				File path = table.getSelectionModel().selectedItemProperty().getValue(); 
				if(path.isDirectory()==true){
					openDirectory(path);
				}else{
					openFile(path);
				}
			}
		});
		VBox vbox = new VBox();
		vbox.getChildren().addAll(btnBack,table);
		
		Scene scene = new Scene(vbox);
		window.setScene(scene);
		window.show();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public void openFile(File filePath){

		Desktop desktop = Desktop.getDesktop();
		try {
			desktop.open(filePath);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void openDirectory(File filePath){
		table.getItems().clear();
		table.getItems().addAll(filePath.listFiles());
		
	}

	public static void main(String[] args) {
		launch(args);
	}
	
}
 
0

Jeśli przez katalog rodzinny rozumiesz katalog nadrzędny to możesz go dostać za pomocą metody getParent() (zwraca String) lub getParentFile() (zwraca File) z klasy File. Jeśli obiekt file wskazuje na plik to np. getParent() zwróci ścieżkę do folderu, w którym ten plik się znajduje, a jeśli wskazuje na folder to zwróci ścieżkę do folderu nadrzędnego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1