问题描述
我正在使用NetBeans IDE和GUI Builder构建一个Java Swing程序。我制作了一个带有文本字段和按钮的小JFrame。用户可以输入一个数字,然后按Enter或按下面的j按钮可以确认该数字。
private void plySetterBtnActionPerformed(java.awt.event.ActionEvent evt) {
// Todo add your handling code here:
if(evt.getSource() == plySetterBtn) {
int numberOfPlayers = 0;
try{
numberOfPlayers = Integer.parseInt(this.playerNumberField.getText());
dispose();
} catch(Exception e) {
JOptionPane.showMessageDialog(this,"Please insert only numeric digits (0-9) \n Note: Spaces will be counted as letters.","Error#094:",JOptionPane.ERROR_MESSAGE);
}
}
}
我想通过使用getter和setter在此私有方法之外使用int“ numberOfPlayers”,但这就是我要坚持的地方。 (正如我刚才所说,该代码部分是由NetBeans GUI Builder生成的。)当我尝试在IDE上方的代码中设置一个setter和getter时,显示“表达式的非法开始”
当我尝试通过此代码设置设置器和获取器时,IDE会说int“ numberOfPlayers”不存在。
我做错了什么,我有什么不同?
解决方法
我认为更好的方法是创建一个公共方法来返回所需的值,如下所示:
public class MyFrame extends JFrame implements PlayerGui {
// ...etc.
public int getPlayerNumber() {
return Integer.parseInt(this.playerNumberField.getText());
}
}
您可能需要按GUI编辑器上的“源”按钮,以便仅添加所需的任意源代码。然后,在类的外部调用此方法。它还有助于建立一个接口,以便您可以更轻松地模拟测试类并将其注入其余代码中。
public interface PlayerGui {
int getPlayerNumber();
}