相关文章推荐
听话的牛肉面  ·  两篇2023 ...·  1 年前    · 
爱听歌的抽屉  ·  编写第一个Qt程序·  1 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

When I try to make a JSpinner un-editable by keyboard or mouse like this:

((DefaultEditor) mySpinner.getEditor()).getTextField().setEditable(false);
mySpinner.setEnabled(false);

It disables any keyboard entry and pasting, but I can still click the up/down buttons and change the value.

How do I disable the up/down buttons?

If the spinner uses a JSpinner.DefaultEditor or its subclass, then the following code works (keyboard navigation disabled, spinner buttons do not work, yet it is possible to select and copy the value displayed in the spinner).

JSpinner component = ...;
component.setEnabled( false );
if ( component.getEditor() instanceof JSpinner.DefaultEditor ) {
   JSpinner.DefaultEditor editor = ( JSpinner.DefaultEditor ) component.getEditor();
   editor.getTextField().setEnabled( true );
   editor.getTextField().setEditable( false );

If the spinner has a custom editor with something other then JTextComponent, then it is probably still possible to use the same approach (disable the spinner, re-enable the actual component used by the spinner editor, mark that component as read-only using its API).

// Disabling mouse input without desabling the JSpinner itself
JSpinner spinner = ...;
// set the minimum and maximum values to the current value, 
// thus preventing changes to the spinner's current value
SpinnerNumberModel snm = (SpinnerNumberModel) spinner.getModel();
snm.setMinimum((Integer)spinner.getValue());
snm.setMaximum((Integer)spinner.getValue());
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.