반응형
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();
}
파일리스트 불러오는 것은 성공했으나 트리는 업데이트 하도록 하겠습니다.
반응형
'인턴' 카테고리의 다른 글
[인턴 OJT 15일차] swing 파일 탐색기 - 2 (0) | 2023.01.09 |
---|---|
[인턴 OJT 14일차] JTree 파일 탐색기 트리 추가 (0) | 2022.12.30 |
[인턴 OJT 12일차] JTree 주소록 저장, 수정, 삭제, 초기화 기능 추가 (0) | 2022.12.30 |
[인턴 OJT 11일차] Swing 아날로그 시계 구현, JTree 주소록 (0) | 2022.12.30 |
[인턴 OJT 10일차] 스윙 주소록 저장, 수정, 삭제 / JTree, Thread 정리 (0) | 2022.12.23 |