JFileChooserのファイル名とフィルタのラベルを右揃えに変更する
Total: 2448
, Today: 1
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
JFileChooser
の下部に表示されるファイル名とフィルタのラベルを左揃えから右揃えに変更します。
Screenshot
Advertisement
サンプルコード
class RightAlignmentMetalFileChooserUI extends MetalFileChooserUI {
protected RightAlignmentMetalFileChooserUI(JFileChooser fc) {
super(fc);
}
@Override public void installComponents(JFileChooser fc) {
super.installComponents(fc);
SwingUtils.stream(getBottomPanel())
.filter(JLabel.class::isInstance)
.map(JLabel.class::cast)
.forEach(l -> {
l.setHorizontalAlignment(SwingConstants.RIGHT);
l.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
});
}
}
class RightAlignmentWindowsFileChooserUI extends WindowsFileChooserUI {
protected RightAlignmentWindowsFileChooserUI(JFileChooser fc) {
super(fc);
}
@Override public void installComponents(JFileChooser fc) {
super.installComponents(fc);
SwingUtils.stream(getBottomPanel())
.filter(JLabel.class::isInstance)
.map(JLabel.class::cast)
.forEach(l -> l.setAlignmentX(1f));
}
}
View in GitHub: Java, Kotlin解説
MetalLookAndFeel
MetalFileChooserUI#getBottomPanel()
で取得できるJPanel
のレイアウトをBoxLayout.Y_AXIS
に設定し、以下の3
つのJPanel
を縦並びで配置- ファイル名ラベルとファイル名入力欄を配置した
fileNamePanel
(BoxLayout.LINE_AXIS
) - ファイルフィルタラベルとファイルフィルタコンボボックスを配置した
filesOfTypePanel
(BoxLayout.LINE_AXIS
) approveButton
などを配置したButtonPanel
(FlowLayout
風の独自ButtonAreaLayout
)
- ファイル名ラベルとファイル名入力欄を配置した
- 各ラベルの推奨サイズを文字列の長い方に合わせることで別パネルに分かれていても位置が揃うように設定されているため、
JLabel#setHorizontalAlignment(SwingConstants.RIGHT)
で右揃えに変更可能
WindowsLookAndFeel
WindowsFileChooserUI#getBottomPanel()
で取得できるJPanel
のレイアウトをBoxLayout.LINE_AXIS
に設定し、以下の3
つのJPanel
を横並びで配置- ファイル名ラベルとファイル名入力欄を配置した
fileNamePanel
(BoxLayout.Y_AXIS
) - ファイルフィルタラベルとファイルフィルタコンボボックスを配置した
filesOfTypePanel
(BoxLayout.Y_AXIS
) approveButton
などを配置したButtonPanel
(BoxLayout.Y_AXIS
)
- ファイル名ラベルとファイル名入力欄を配置した
- 各ラベルは
BoxLayout.Y_AXIS
のJPanel
にまとめられているのでJComponent.html#setAlignmentX(1f)
で右揃えに変更可能