2013-09-30 68 views
1

时JTextField想要成为最后一个我正在为这个多人游戏学校工作,我目前正尝试从JTextField获取用户名。当我尝试使用.getText()

下面的代码有问题:

JTextField textField = new JTextField(); 

new Statistics(textField.getText()); 

统计需要一个字符串,但是当我尝试这一点,日食告诉我,我需要转换的JTextField的决赛。

该代码起作用,因为统计目前没有做任何事情,但我认为这不会发生,并且稍后会在我开始实施统计时破坏我的代码。任何解释和修复?

+0

你可能在匿名内部类中访问它。 –

+3

这绝对不是完整的代码。我的猜测是,它是一个你在内部类中访问的局部变量,但是你没有给我们足够的信息。 –

+0

确切的消息是哪一个?也许你在嵌套类中使用'textField'? – SJuan76

回答

3

此调用:new Statistics(textField.getText());可能发生在内部匿名类内部,也许在ActionListener内部,并且您的textField是本地变量。问题是,匿名内部类使副本他们使用的本地字段,如果字段不是最终的,则副本可能不会与原来同步导致各种问题。

我建议您在类中声明textField,而不是在方法或构造函数内部声明,从而使其成为类字段。如果你这样做,那么你将不必宣布它是最终的。

否则,如果你不能或不应该这样做,那么确定,继续并声明它(你不能“投”它)作为最终。

+0

是的,我在查看我的代码后发现了这一点。老实说,这只是我的一部分放屁。不过,感谢您的帮助。 – KuroMajutsu

+0

@KuroMajutsu:感谢您的跟进。 –

相关问题