美好的一天!
我有两个对象,即PLAYER和GAME ..播放器由变量String playerName
组成。在Player对象中,我有一个方法public String getPlayer();
,其中当您在文本框中键入文本时,您可以获取名称。
我需要访问GAME对象中的名称。但我无法访问它。我的代码如下:
PLAYER:
public class Player extends javax.swing.JDialog {
private String playerName;
public Player(JFrame owner) {
super(owner, true);
initComponents();
}
public Player() {
this(null);
}
public String getPlayer() {
playerName = txtPlayerName.getText();
System.out.println(playerName);
return playerName;
}
}
GAME:
public class MainGame extends JDialog implements ActionListener {
public MainGame(JDialog owner) {
super(owner, true);
initComponents();
Player playerName = new Player();
pName.setText(playerName.getPlayer());
newGame();
}
我可以知道我做错了什么吗?任何帮助将受到高度赞赏。谢谢。
答案 0 :(得分:2)
你说:
“在玩家对象中,我有一个方法public String getPlayerName();
”
虽然你的代码中不存在这样的东西。也许你的意思是public String getPlayer()
,因为该方法存在。
另外,请查看您现有的方法:
public String getPlayer() {
playerName = txtPlayerName.getText();
System.out.println(playerName);
return playerName;
}
上面你有:
private String playerName;
在getPlayer()
方法中,您正在访问不存在的txtPlayerName
。你可能意味着
this.playerName = playerName.getText();
虽然这不能完全解决您的问题,但我无处可查看访问代码中的外部playerName
(txtPlayerName
)的方法。
现在我已经指出了一些意见,我相信你可以处理其余的事情。
答案 1 :(得分:1)
您使用默认构造函数,它不会初始化组件:
Player playerName = new Player();
这可能是个问题。
然后,当然,代码段中未定义txtPlayerName
。
最后 - 您使用变量和方法名称混淆了自己和其他人;)请将Player
中的getter方法重命名为getPlayerName()
(因为您确实返回了玩家名称)和本地变量{{ 1 {} playerName
构造函数中的MainGame
(因为现在您创建了player
对话框。
BTW - 您没有显示Player
对话框。解决问题的另一个机会。致电Player
并允许用户输入姓名。
回复评论
playerName.setVisible(true)
有两个构造函数,默认构造函数(无参数)和另一个构造函数(采用Player
的实例)。 其他构造函数调用魔术方法JFrame
和默认构造函数dos not。我不知道必须初始化什么,但如果使用默认构造函数创建initComponents()
对话框,则缺少此步骤。
答案 2 :(得分:0)
我想我们应该问他I can not access it
的意思。
您获得的异常或编译错误是什么,以及在哪一行。