2013-04-29 3 views
0

У меня есть JSpinner, на котором я хотел бы взять под контроль, когда редактирование включено. С клавиатурой это достаточно просто, но как насчет этих маленьких виджетах стрелок? Я даже не могу найти ссылки на них в источнике JSpinner или в любом из его закрытых классов.Отключить кнопки со стрелками вверх и вниз на JSpinner

+3

Что не так с функциональностью, предоставляемой 'JSpinner # setEnabled'? Я не вижу, как это будет отличаться от отключения редактора текстового поля и кнопок со стрелками – Robin

+0

Наверное, ничего, и почему я об этом не подумал, но на самом деле мне все еще любопытно, где они скрывали эти кнопки. –

+0

Эти кнопки содержатся в классе 'SpinnerUI'. См. Например, класс BasicSpinnerUI, в котором вы можете переопределить метод 'createNextButton', то есть вы имеете доступ к этим кнопкам – Robin

ответ

0

вы не можете взять контроль над этими двумя кнопками со стрелками, но вы можете сделать, как это

private void buttonActionPerformed(java.awt.event.ActionEvent evt) {         

      p.setEnabled(false); 

} 

предположим, что вы хотите, кнопка нажата, и пользователь не будет в состоянии использовать JSpinner на все это намек на больше действий вы можете модифицировать его, а

0

можно также разрешить использование использовать JSpinner недо для определенного значения, используя

if(spinner.getValue()==10){ 
     //show error message and 
     spinner.setEnabled(false); 
    } 
1

вы можете использовать setUI(), чтобы скрыть стрелку Jspinner.

public void hideSpinnerArrow(JSpinner spinner) { 
     Dimension d = spinner.getPreferredSize(); 
     d.width = 30; 
     spinner.setUI(new BasicSpinnerUI() { 
      protected Component createNextButton() { 
       return null; 
      } 

      protected Component createPreviousButton() { 
       return null; 
      } 
     }); 
     spinner.setPreferredSize(d); 
    } 

Как вы видите, просто сделать createNextButton() и createPreviousButton() возвращение null.

Потому что мы использовали BasicUI, поэтому нам нужно снова установить размер Spinner. Я использовал PreferredSize.

Смежные вопросы