Java 禁用JSpinner上的向上和向下箭头按钮
我有一个JSpinner,在启用编辑时,我想控制它。键盘很简单,但是旁边的小箭头小部件呢?我甚至在JSpinner源代码或其任何封闭类中都找不到对它们的引用。您无法控制这两个箭头按钮,但您可以这样做Java 禁用JSpinner上的向上和向下箭头按钮,java,swing,jspinner,Java,Swing,Jspinner,我有一个JSpinner,在启用编辑时,我想控制它。键盘很简单,但是旁边的小箭头小部件呢?我甚至在JSpinner源代码或其任何封闭类中都找不到对它们的引用。您无法控制这两个箭头按钮,但您可以这样做 private void buttonActionPerformed(java.awt.event.ActionEvent evt) { p.setEnabled(false); } 假设您想按下
private void buttonActionPerformed(java.awt.event.ActionEvent evt) {
p.setEnabled(false);
}
假设您想按下一个按钮,而用户根本无法使用jspinner,这是一个提示,提示您可以进行更多操作,您也可以修改它您还可以允许使用jspinner,直到使用
if(spinner.getValue()==10){
//show error message and
spinner.setEnabled(false);
}
您可以使用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,所以必须再次设置微调器大小。我使用了
PreferredSize
如果所使用的UI类派生自basicsPennerUI
,则可以通过以下方式删除箭头按钮:
for (Component component : spinner.getComponents()) {
if (component.getName() != null && component.getName().endsWith("Button")) {
spinner.remove(component);
}
}
JSpinner#setEnabled
提供的功能有什么问题?我看不出这与禁用textfield编辑器和箭头按钮有什么不同可能什么都没有,为什么我没有想到这一点,但实际上,我仍然很好奇这些按钮隐藏在哪里。这些按钮包含在SpinnerUI
类中。例如,请参见BasicPennerUI
类,在该类中,您可以覆盖createNextButton
方法,这意味着您可以访问这些按钮这里有两个BasicCarrowButton,可以重新布局、禁用、更改/替换这些组件、更改图标,我想将图标从黑色更改为红色