Swing/SpinnerEditorBorderPainted のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/SpinnerEditorBorderPainted へ行く。
- 1 (2025-09-15 (月) 09:41:50)
- category: swing folder: SpinnerEditorBorderPainted title: JSpinner内で使用するEditorの縁を描画する tags: [JSpinner, JTextField, Border, UIManager] author: aterai pubdate: 2025-09-15T09:40:54+09:00 description: JSpinnerの内部で使用するEditorコンポーネントのBorderを描画するかを切り替えます。 image: https://drive.google.com/uc?id=1EPRPY8C3TNOo13_7tay_P0Rzhp5xxsc9
Summary
JSpinnerの内部で使用するEditorコンポーネントのBorderを描画するかを切り替えます。
Screenshot

Advertisement
Source Code Examples
JSpinner spinner = new JSpinner();
String key = "Spinner.editorBorderPainted";
JCheckBox check = new JCheckBox(key) {
@Override public void updateUI() {
super.updateUI();
UIDefaults def = UIManager.getLookAndFeelDefaults();
boolean b = def.getBoolean(key);
Object o = def.get(key);
String lnf = UIManager.getLookAndFeel().getClass().getName();
String name = lnf.substring(lnf.lastIndexOf('.') + 1);
info.append(String.format("%s: %s=%s%n", name, key, o == null ? null : b));
setSelected(b);
UIManager.put(key, b);
SwingUtilities.updateComponentTreeUI(spinner);
}
};
check.addActionListener(e -> {
JCheckBox src = (JCheckBox) e.getSource();
UIManager.put(key, src.isSelected());
SwingUtilities.updateComponentTreeUI(spinner);
});
View in GitHub: Java, KotlinDescription
UIManager.put("Spinner.editorBorderPainted", false)JSpinnerの内部で使用するEditorコンポーネントのBorderを非表示*1#getTextField()などで取得できるJTextFieldのBorderにnullが設定される
MetalLookAndFeel、WindowsLookAndFeelなどのデフォルトSynthLookAndFeel、NimbusLookAndFeelではSpinner.editorBorderPaintedは未設定でUIManager.getLookAndFeelDefaults()#get("Spinner.editorBorderPainted")はnullとなり、変更しても効果がない?
UIManager.put("Spinner.editorBorderPainted", true)JSpinnerの内部で使用するEditorコンポーネントのBorderを表示- 一度この
Borderを表示状態にしてから、SynthLookAndFeelを継承するNimbusLookAndFeelなどに切り替えるとJSpinner自体の高さが不正になる → 原因調査中NimbusLookAndFeelではEditorコンポーネントにフォーカス移動でSynthBorderの描画を変更する必要があるので、Borderにnullが設定されるとこれを回避しようとしてサイズがおかしくなる?