概率单元格编辑器

Sta*_*lin 7 java swing jtable

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

*与双重编辑器的区别:它应该只允许范围内的数字 0..100

And*_*son 5

..范围0..100的数字

使用a JSpinner作为TableCellEditor.


Paŭ*_*ann 5

如果JFormattedTextField使用AbstractFormatter进行转换,还是使用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);
    }
}
Run Code Online (Sandbox Code Playgroud)

你想要覆盖remove()replace类似.

(我想可能会有更高效的实现,但我认为这对于大多数用户的打字速度来说足够快.)

此过滤器将从您的AbstractFormatter实现的getDocumentFilter方法返回.