javaswingjspinnercenter-align

how to center text of a JSpinner


My question is self explanatory: how to center the text of a JSpinner? the methode setHorizontalAligment is not there. I also tried setAlignmentX, still nothing... Any help would be appreciated c:


Solution

  • JSpinner is a container of other components, one of which is a the editor.

    JSpinner spinner = ...;
    JComponent editor = spinner.getEditor();
    

    But that doesn't help us, as setHorizontalAligment isn't a method of JComponent.

    You can then inspect the editor type of component it is...

    if (editor instanceof JSpinner.DefaultEditor) {
    

    If it's a JSpinner.DefaultEditor, you can cast it and use setHorizontalAlignment...

    JSpinner.DefaultEditor spinnerEditor = (JSpinner.DefaultEditor)editor;
    spinnerEditor.getTextField().setHorizontalAlignment(JTextField.CENTER);
    

    Potentionally you may also need to check for JTextField as well, but if you're using the default editor models, it would normally return JSpinner.DefaultEditor