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)将成为此模型的主要监听者之一,并且在模型的状态更改时将更改其显示。
- SudokuCellValue枚举(命名为你想要的),可容纳从1到9的值枚举,以及可能为空值(虽然你可以使用
- 我想创建一个视图类,这意味着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