Swing/DetailsViewFileChooser のバックアップ(No.13)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/DetailsViewFileChooser へ行く。
- 1 (2011-01-10 (月) 17:02:55)
- 2 (2011-01-10 (月) 22:39:33)
- 3 (2011-01-12 (水) 16:04:36)
- 4 (2011-01-13 (木) 15:15:37)
- 5 (2012-12-23 (日) 05:27:57)
- 6 (2013-04-30 (火) 18:11:09)
- 7 (2015-01-08 (木) 14:00:23)
- 8 (2016-04-27 (水) 20:11:20)
- 9 (2016-05-26 (木) 14:43:16)
- 10 (2017-04-07 (金) 13:51:51)
- 11 (2017-08-18 (金) 14:49:03)
- 12 (2017-11-02 (木) 15:32:16)
- 13 (2018-08-21 (火) 14:24:26)
- 14 (2019-01-18 (金) 17:22:00)
- 15 (2020-11-26 (木) 11:39:38)
- 16 (2022-03-08 (火) 19:33:13)
- category: swing folder: DetailsViewFileChooser title: JFileChooserのデフォルトをDetails Viewに設定 tags: [JFileChooser, FilePane] author: aterai pubdate: 2011-01-10T17:02:55+09:00 description: JFileChooserを開いたときのデフォルトをリストではなく詳細に変更します。 image:
概要
JFileChooser
を開いたときのデフォルトをリストではなく詳細に変更します。
Screenshot
Advertisement
サンプルコード
//java - How can I start the JFileChooser in the Details view? - Stack Overflow]
//https://stackoverflow.com/questions/16292502/how-can-i-start-the-jfilechooser-in-the-details-view
//for (Object key: chooser.getActionMap().allKeys()) {
// System.out.println(key);
//}
Optional.ofNullable(chooser.getActionMap().get("viewTypeDetails"))
.ifPresent(a -> a.actionPerformed(null));
View in GitHub: Java, Kotlin解説
java - How can I start the JFileChooser in the Details view? - Stack Overflowで紹介されているように、ActionMap
からviewTypeDetails
アクションを取得する方法が一番簡単なようです。
//@see javax/swing/plaf/basic/BasicFileChooserUI.java
ActionMap map = new ActionMapUIResource();
Action refreshAction = new UIAction(FilePane.ACTION_REFRESH) {
public void actionPerformed(ActionEvent evt) {
getFileChooser().rescanCurrentDirectory();
}
};
map.put(FilePane.ACTION_APPROVE_SELECTION, getApproveSelectionAction());
map.put(FilePane.ACTION_CANCEL, getCancelSelectionAction());
map.put(FilePane.ACTION_REFRESH, refreshAction);
map.put(FilePane.ACTION_CHANGE_TO_PARENT_DIRECTORY, getChangeToParentDirectoryAction());
//sun.swing.FilePane.ACTION_APPROVE_SELECTION = "approveSelection";
//sun.swing.FilePane.ACTION_CANCEL = "cancelSelection";
//sun.swing.FilePane.ACTION_EDIT_FILE_NAME = "editFileName";
//sun.swing.FilePane.ACTION_REFRESH = "refresh";
//sun.swing.FilePane.ACTION_CHANGE_TO_PARENT_DIRECTORY = "Go Up";
//sun.swing.FilePane.ACTION_NEW_FOLDER = "New Folder";
//sun.swing.FilePane.ACTION_VIEW_LIST = "viewTypeList";
//sun.swing.FilePane.ACTION_VIEW_DETAILS = "viewTypeDetails";
JFileChooser
の子でUIManager.getIcon("FileChooser.detailsViewIcon")
アイコンが設定されているJToggleButton
を検索、doClick()
することで、List
からDetailsView
(詳細)に切り替える方法もあります。
//searchAndClick(chooser, UIManager.getIcon("FileChooser.detailsViewIcon"));
private static boolean searchAndClick(Container parent, Icon icon) {
for (Component c:parent.getComponents()) {
if (c instanceof JToggleButton && ((JToggleButton) c).getIcon() == icon) {
((AbstractButton) c).doClick();
return true;
} else {
if (searchAndClick((Container) c, icon)) {
return true;
}
}
}
return false;
}
警告されますが、以下のようにsun.swing.FilePane#setViewType(sun.swing.FilePane.VIEWTYPE_DETAILS)
メソッドを使用する方法もあります。
FilePane filePane = (FilePane) findChildComponent(chooser, FilePane.class);
filePane.setViewType(FilePane.VIEWTYPE_DETAILS);
参考リンク
- java - How can I start the JFileChooser in the Details view? - Stack Overflow
- Swing Utils « Java Tips Weblog
- sun.swing: FilePane.java