Java - 绘制数独 - 如何以正确的方式构建代码?

(一个普遍的问题)Java - 绘制数独 - 如何以正确的方式构建代码?

我有一个任务,我必须建立一个数独,我想到类/逻辑来构建它,并认为我可以使用一个建议。

我想使用JFrame并在其上构建带有TextFields的JPanel(用户应该“解决”数独)。

我有一个名为“DrawSudoku”的绘制空板的类。 我必须先画一块空板,这样“用户”才能在其中输入数字。 在该板上我必须检查一些逻辑。所以我必须自己访问textFields。

到目前为止,这是我所做的一切。现在我正在考虑以董事会背后的“逻辑”来建立另一个班级。

但我遇到了问题 如何从另一个类获取JPanel上存在的JTextFields?

我可以为其背后的绘图和逻辑单独分类吗?
谢谢!

回答:

该板上我要检查一些逻辑。所以我必须自己访问textFields。

不一定

我怎样存在的JPanel的,从另一个类JTextField的?

如何评估来自另一个对象的任何对象的状态 - 通过访问器或“getter”方法。

我可以为它后面的绘图和逻辑单独设置类吗?

你不仅可以,你绝对是应该。

如果这是我的项目,我会考虑做以下几点:

  • 首先,创建一个非GUI数独模型类。这可能包括:

    • SudokuCellValue枚举(命名为你想要的),可容纳从1到9的值枚举,以及可能为空值(虽然你可以使用null表示此)
    • SudokuCell对象,具有可编辑布尔值的对象,并为上面的枚举保存单个值。
    • SudokuGrid对象,一个9 x 9的SudokuCells网格。
    • 将侦听器挂钩到模型中以便通知状态发生变化的机制 - 即由一个或多个SudokuCell对象持有的SudokuCellValue的更改。视图(GUI)将成为此模型的主要监听者之一,并且在模型的状态更改时将更改其显示。
  • 我想创建一个视图类,这意味着GUI,

    • 一说持有参照其模​​式(见上文)
    • 和一个上附加了听众的模型 - 我喜欢用的PropertyChangeListeners这个
    • 我把它挂与JTextField中的网格,
    • 这些文本字段将使用某个DocumentFilter以允许用户或者清除该字段或只能通过9个位数的数字文本输入1 。
    • 基于相应模型单元格的可编辑状态,将启用输入(或者可能更好 - 可输入焦点)。
  • 我会创建一个控制器来控制视图和模型之间的一些通信。

使用这种类型的设置,外部类可以侦听对模型的更改,并且不必直接访问视图的JTextField。

回答:

如果您的DrawSudoku类中包含公用方法,然后您的逻辑类可以调用,则不需要访问文本字段本身。这与为私有变量编写getter和setter方法非常相似。例如,如果你想你的逻辑类能够将数字“6”写在板上某广场上,你可以写在DrawSudoku的方法是这样的:

public void setSquareText(String text, int row, int column) { 

// change the appropriate text field here

textField.setText(text);

}

然后,调用这个方法你的逻辑类,通过使绘图类的一个实例:

DrawSudoku drawer = new DrawSudoku(); 

drawer.setSquareText("6", 1,1);

或者,你可以写在一个DrawSudoku方法,返回给定的JTextField,像这样:

public JTextField getTextField(int row, int column){ 

// find the appropriate text field, then return it

return textField;

}

ŧ母鸡,调用此方法在逻辑类以访问JTextField的,就像这样:

JTextField textField = drawer.getTextField(1,1); 

textField.getText();

textField.setText("6");

以上是 Java - 绘制数独 - 如何以正确的方式构建代码? 的全部内容, 来源链接: utcz.com/qa/257622.html

回到顶部