我上课Probability
。我想使用自定义渲染器(已经完成)和像编辑器一样。但是我甚至找不到双编辑器(只有Number),所以我真的不知道应该如何实现它。问题是:我应该如何实施它?
*与双重编辑器的区别:它只允许范围为0..100
答案 0 :(得分:5)
..数字范围为0..100
使用JSpinner
作为TableCellEditor
。
答案 1 :(得分:5)
使用AbstractFormatter执行转换的JFormattedTextField
和拒绝任何不是有效百分比值的DocumentFilter怎么样?
这是一个示例DocumentFilter(未通过阅读文档进行测试):
class PercentageFilter extends DocumentFilter {
insertString(FilterBypass bp, int offset, String adding, AttributeSet attrs) {
Document doc = bp.getDocument();
String text = doc.getText(0, offset) + adding + doc.getText(offset, doc.getLength()-offset);
try {
double d = Double.parseDouble(text);
if(d < 0 || 100 < d) {
// to big or too small number
return;
}
}
catch(NumberFormatException ex) {
// invalid number, do nothing.
return;
}
// if we come to this point, the entered number
// is a valid value => really insert it into the document.
bp.insertString(offset, adding, attrs);
}
}
您可能希望同样覆盖remove()
和replace
。
(我想可能会有更高效的实现,但我认为这对于大多数用户的打字速度来说足够快。)
此过滤器将从您的AbstractFormatter实现的getDocumentFilter
方法返回。