how to center text of a JSpinner
Asked Answered
S

1

6

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:

Schauer answered 28/3, 2014 at 0:32 Comment(0)
L
15

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

Lecturer answered 28/3, 2014 at 0:36 Comment(5)
sadly, the JSpinner doesn't seem to have an instance of JTextField... But thanks for the quick answer!Schauer
Thanks you very much! This worked just fine! I hated the text to be on the right somehow. Thanks again! :)Schauer
@Schauer Yeah, love spinners :PLecturer
I'd like to add a couple of things to this answer: 1) The reason for this behavior is that apparently the JSpinner component creates its internal TextField using the parent control’s property values when it is first rendered, and then ignores changes to the parent property values. 2) If working with JComponents in MATLAB, it is sufficient to call e.g. jSpinner.getEditor.getTextField.setHorizontalAlignment(javax.swing.JTextField.LEFT); to get the desired effect.Atalie
jSpinner.getEditor.getTextField.setHorizontalAlignment(javax.swing.JTextField.L‌​EFT); ... which is basically what the answer saysLecturer

© 2022 - 2024 — McMap. All rights reserved.