概率单元格编辑器

时间:2011-06-12 11:57:27

标签: java swing jtable

我上课Probability。我想使用自定义渲染器(已经完成)和像编辑器一样。但是我甚至找不到双编辑器(只有Number),所以我真的不知道应该如何实现它。问题是:我应该如何实施它?

*与双重编辑器的区别:它只允许范围为0..100

的数字

2 个答案:

答案 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方法返回。