使用numberformatter时无法删除JFormattedTextField中的整个字符串

jmo0nnb3  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(273)

我为大学课程的图像编辑器项目开发了一个gui。它的核心功能都在那里,但我觉得我应该限制用户(ta在oop高级课程最有可能)只在文本字段中输入值0-255,即使我在我的自定义像素类,如setred(短红色)的方法,该方法参数将固定在255,如果它大于它(类似地去为零)值)。

public void setRed (short newRed)
        {
            if(newRed>MAX_PIXEL_VALUE)
                this.red=MAX_PIXEL_VALUE;
            else if (newRed<MIN_PIXEL_VALUE)
                this.red=MIN_PIXEL_VALUE;
            else
                this.red=newRed;
        }

常数具有以下值:

private static final short MIN_PIXEL_VALUE = 0;
private static final short MAX_PIXEL_VALUE = 255;

private static final short MIN_TRANSPARENCY = 255;
private static final short MAX_TRANSPARENCY = 0;

大多数组件来自awt包(在oop java课程中介绍),采用rgb输入进行选择着色的文本字段和用于层透明度调整的alpha字段是jformatedtextfields,这些字段是使用以下数字格式创建的:

private NumberFormatter rgbaFormater()
{

    NumberFormat rgbaFormat = NumberFormat.getInstance();
    rgbaFormat.setMinimumIntegerDigits(0);
    rgbaFormat.setMaximumIntegerDigits(3);

    NumberFormatter rgbaFormater = new NumberFormatter(rgbaFormat) ;
    rgbaFormater.setValueClass(Integer.class);
    rgbaFormater.setMinimum(0);
    rgbaFormater.setMaximum(255);
    rgbaFormater.setAllowsInvalid(false);
    rgbaFormater.setCommitsOnValidEdit(true);

    return  rgbaFormater;

}

当我无法删除整个输入的字符串时,就会出现问题,如我键入255时所示,2无法删除。我只能通过用鼠标选择它并在上面键入来更改它的值。我怎样才能解决这个问题?

提前多谢了!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题