Swing/DetailsViewFileChooser の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/DetailsViewFileChooser へ行く。
- Swing/DetailsViewFileChooser の差分を削除
--- category: swing folder: DetailsViewFileChooser title: JFileChooserのデフォルトをDetails Viewに設定 tags: [JFileChooser, FilePane] author: aterai pubdate: 2011-01-10T17:02:55+09:00 description: JFileChooserを開いたときのデフォルトをリストではなく詳細に変更します。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TSq77M-soeI/AAAAAAAAAxg/0nnen-n-cAY/s800/DetailsViewFileChooser.png --- * 概要 [#summary] `JFileChooser`を開いたときのデフォルトをリストではなく詳細に変更します。 #download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TSq77M-soeI/AAAAAAAAAxg/0nnen-n-cAY/s800/DetailsViewFileChooser.png) * サンプルコード [#sourcecode] #code(link){{ // 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); // } String cmd = "viewTypeDetails"; Optional.ofNullable(chooser.getActionMap().get(cmd)) .ifPresent(a -> a.actionPerformed(new ActionEvent(e.getSource(), e.getID(), cmd))); }} * 解説 [#explanation] - [https://stackoverflow.com/questions/16292502/how-can-i-start-the-jfilechooser-in-the-details-view java - How can I start the JFileChooser in the Details view? - Stack Overflow]で紹介されている`ActionMap`から`viewTypeDetails`アクションを取得して`DetailsView`(詳細)に切り替え #code{{ // @see javax/swing/plaf/basic/BasicFileChooserUI.java ActionMap map = new ActionMapUIResource(); Action refreshAction = new UIAction(FilePane.ACTION_REFRESH) { public void actionPerformed(ActionEvent e) { 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`(詳細)に切り替え - `MetalLookAndFeel`などの`JFileChooser`の子で`UIManager.getIcon("FileChooser.detailsViewIcon")`アイコンが設定されている`JToggleButton`を検索、`doClick()`することで`List`から`DetailsView`(詳細)に切り替え -- `WindowsLookAndFeel`での`JFileChooser`の`DetailsView`切り替えは`JRadioButtonMenuItem`なのでこの方法は使用不可 #code{{ // 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)`メソッドを使用する方法もある #code{{ FilePane filePane = (FilePane) findChildComponent(chooser, FilePane.class); filePane.setViewType(FilePane.VIEWTYPE_DETAILS); }} * 参考リンク [#reference] - [https://stackoverflow.com/questions/16292502/how-can-i-start-the-jfilechooser-in-the-details-view java - How can I start the JFileChooser in the Details view? - Stack Overflow] - [https://tips4java.wordpress.com/2008/11/13/swing-utils/ Swing Utils « Java Tips Weblog] -- via: [http://www.java-forums.org/awt-swing/13733-set-jfilechooser-default-details-view.html set jFileChooser default to details view - Java Forums] - [http://www.docjar.com/html/api/sun/swing/FilePane.java.html sun.swing: FilePane.java] * コメント [#comment] #comment #comment