본문 바로가기
인턴

[인턴 OJT 13일차] JTree 파일 탐색기 (진행중)

by 리잼 2022. 12. 30.
반응형

 

Frame 설정

		private FileExplorerPanel panel = new FileExplorerPanel();
       ===========================
        private void initComponent() {
		this.setTitle("File Explorer");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		this.add(panel);
		this.addWindowListener(new FileExplorerFrame_this_WindowAdapter(this));
	}
 

Vo 설정

public class FileVo implements Serializable {
	
	private String fileName;
	private String created;
	private String fileType;
	private String filepath;
	
	
	public FileVo() {
	}
	
	public FileVo(String fileName, String created, String fileType, String filepath) {
		this.fileName = fileName;
		this.created = created;
		this.fileType = fileType;
		this.filepath = filepath;
	}
 

Main 설정

	private static Logger LOGGER = LoggerFactory.getLogger(FileExplorerFrame.class);

	
	public static void main (String[] args) {
		
		try {
			UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
		}
		catch (Exception ex) {
			LOGGER.error(ex.getMessage() + ex);
		}
		LOGGER.debug("프레임호출");
		FileExplorerFrame frame = new FileExplorerFrame();
		frame.setSize(new Dimension(FileExplorerFrame.WIDTH, FileExplorerFrame.HEIGHT));

		// frame이 가운데 표시되게		
		Dimension scrDim = Toolkit.getDefaultToolkit().getScreenSize();
		int xPos = (scrDim.width - frame.getWidth()) / 2;
		int yPos = (scrDim.height - frame.getHeight()) / 2;
		
		frame.setLocation(new Point(xPos, yPos));	
		frame.setVisible(true);

	}
 

Panel 설정

	private GridBagLayout gridBagLayout = new GridBagLayout();
	
	// 프레임 설정
	private JPanel jPanel_Main = new JPanel();
	private JScrollPane jScrollPane_Tree = new JScrollPane();
	private JScrollPane jScrollPane_Table = new JScrollPane();
	private JSplitPane jSplitPane = new JSplitPane();
	
	// 컴포넌트 
	private JTree jTree_FileTree = new JTree();
	private JTable jTable_FileTable = new JTable();
	private CommonTableModel tableModel = new CommonTableModel();
	
	//텍스트 필드
	private JTextField jTextField_Path = new JTextField();
	
	// 트리 생성
	private DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(
			new FileVo("C:", "", "", new File("/").getAbsolutePath()));
	
	private DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);
	
	// 날짜 포멧
	private static SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
	public FileExplorerPanel() { // 기능 구현에 필요한 컴포넌트
		try {
			initComponent();
			initTree();
			initTable();
			initTableData();
			initEvent();
			initData(rootNode);
		}
		catch (Exception ex) {
			LOGGER.error(ex.getMessage(), ex);
		}
	}
 
	private void initTableData() {
		LOGGER.debug("initTableData");
		Vector pathList = new Vector();
		
		String currentDirStr = System.getProperty("user.dir");
		File currentDir = new File(currentDirStr);
		currentDir.getParentFile();

		File[] files = currentDir.listFiles(); 	// currentDir에 있는 파일 리스트 출력
		for (File oneFile : files) {			// 불러온 파일리스트 oneFile로 오브젝트화
			String lastModified = date.format(new Date(oneFile.lastModified()));
			Vector data = new Vector();			
			data.add(oneFile.getName());
			data.add(lastModified);
			data.add((oneFile.isDirectory()?"폴더":"파일")); // ENUM 으로 대체할 예정
			data.add(oneFile.length());
			pathList.add(data);

		}
	
		tableModel.setData(pathList);			// 테이블 모델에 pathlist 셋팅
		tableModel.fireTableDataChanged();
	}
 

파일리스트 불러오는 것은 성공했으나 트리는 업데이트 하도록 하겠습니다.

 

반응형