(一般性问题)
我有一个作业,我必须在其中构建一个数独游戏,我想到构建它的类/逻辑,并认为我可以使用建议。
我想使用JFrame并在其上构建一个带有TextFields的JPanel(用户应该“解决”数独游戏)。
我有一个名为“DrawSudoku”的类,它绘制一个空板。 我必须首先绘制一个空板,因此“用户”可以在其中键入数字。 在那个板上我必须检查一些逻辑。所以我必须自己访问textFields。
到目前为止,我已经完成了所有工作。现在我正在考虑用董事会背后的“逻辑”来构建另一个类。
但我遇到了一个问题 如何从另一个类中获取JPanel上存在的JTextField?
我可以为它后面的绘图和逻辑设置单独的类吗? 谢谢!
答案 0 :(得分:2)
如果在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");
答案 1 :(得分:2)
在那个板上,我必须检查一些逻辑。所以我必须自己访问textFields。
不一定
如何从另一个类中获取JPanel上存在的JTextField?
如何通过访问器或“getter”方法评估来自另一个对象的任何对象的状态。
我可以为它后面的绘图和逻辑设置单独的类吗?
你不仅可以 。
如果这是我的项目,我会考虑做以下事情:
null
来表示这一点)通过这种类型的设置,外部类可以监听模型的更改,而不必直接访问视图的JTextField。