因此,我完成了Sudoku求解器的制作,但我想对其进行改进。为此,我需要从betterJTextField到达documentListener。我正在使用documentListenerbetterJTextFields实时读取,我遇到的问题是insertUpdate(DocumentEvent e)中。

我需要到达betterJTextfield发生在其中的DocumentEvent。例如,如果输入无效,则betterJTextfield将变为红色等。

如果您需要知道的话,我会将所有betterJTextfield放在一个矩阵中。数独中的每个字段都处理一个数字。

@Override
    public void insertUpdate(DocumentEvent e) {

       //Removed code which checks if the input in the betterJTextField is fine.

    }

(JFormattedTextfield扩展了JTextField)
public class betterJTextField extends JFormattedTextField {
private int row;
private int column;

public betterJTextField(Format format, int row, int column) {
    super(format);
    this.row = row;
    this.column = column;
    // TODO Auto-generated constructor stub
}

public int getRow() {
    return row;
}

public int getColumn() {
    return column;
}

最佳答案

我不是很完全理解您的要求,但是我相信这是您想要的:

private static class RedDocumentListener implements DocumentListener {
    private JTextField textField;

    public RedDocumentListener(JTextField textField) {
        this.textField = textField;
    }
    @Override
    public void insertUpdate(DocumentEvent e) {
        textField.setBackground(Color.red);
    }
    @Override
    public void removeUpdate(DocumentEvent e) {
        textField.setBackground(Color.red);
    }
    @Override
    public void changedUpdate(DocumentEvent e) {
        textField.setBackground(Color.red);
    }
}

07-24 21:05