Java Object方法不起作用

时间:2011-01-31 08:24:02

标签: java

美好的一天!

我有两个对象,即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();
    }

我可以知道我做错了什么吗?任何帮助将受到高度赞赏。谢谢。

3 个答案:

答案 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();

虽然这不能完全解决您的问题,但我无处可查看访问代码中的外部playerNametxtPlayerName)的方法。

现在我已经指出了一些意见,我相信你可以处理其余的事情。

答案 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的意思。

您获得的异常或编译错误是什么,以及在哪一行。