JFileChooserのファイル一覧で選択状態をWindowsスタイルに設定する
Total: 1141
, Today: 5
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JFileChooser
のファイル一覧でファイルの選択状態やポップアップメニューのセパレータなどをWindows
風の表示に変更します。
Screenshot
Advertisement
サンプルコード
String key = "FileChooser.listViewWindowsStyle";
JCheckBox check = new JCheckBox("listViewWindowsStyle") {
@Override public void updateUI() {
super.updateUI();
boolean b = UIManager.getLookAndFeelDefaults().getBoolean(key);
setSelected(b);
}
};
JButton button = new JButton("show");
button.addActionListener(e -> {
boolean b = check.isSelected();
UIManager.put(key, b);
JFileChooser fileChooser = new JFileChooser();
int retValue = fileChooser.showOpenDialog(getRootPane());
if (retValue == JFileChooser.APPROVE_OPTION) {
log.setText(fileChooser.getSelectedFile().getAbsolutePath());
}
});
View in GitHub: Java, Kotlin解説
FileChooser.listViewWindowsStyle
:Boolean.TRUE
- スクリーンショット下
WindowsLookAndFeel
でのデフォルトで、JFileChooser
のファイル一覧の選択状態などを以下のようなWindows
スタイル?で表示するWindowsLookAndFeel
以外でもUIManager.put("FileChooser.listViewWindowsStyle", Boolean.TRUE)
を設定するとWindows
スタイルでの表示が可能になる
JList
を使用したListView
、JTable
を使用したDetailsView
でファイルなどを選択し、右クリックなどでポップアップメニューを開くと選択状態の表示がクリアされる- デフォルト?の
Windows 10
のファイル選択ダイアログでは右クリックでポップアップメニューを開いてもファイル選択状態は維持されるので、上記の動作が意図したものかバグなのかは分からない UIManager.put("FileView.fullRowSelection", Boolean.TRUE)
が設定されてJTable
を使用したDetailsView
の一行選択が有効になっている場合は、選択状態の表示がクリアが無効になる- JFileChooserのDetails Viewで行全体を選択可能にする
- デフォルト?の
- ポップアップメニューにセパレータが追加される
FileChooser.listViewWindowsStyle
:Boolean.FALSE
- スクリーンショット上
WindowsLookAndFeel
以外でのデフォルトJList
を使用したListView
、JTable
を使用したDetailsView
でファイルなどを選択し、右クリックなどでポップアップメニューを開いても選択状態の表示が保持される- ポップアップメニューのセパレーターが非表示になる