2016-04-08 15 views
0

現在、ログインシステムのためにSwingを使用してGUIを作成しています。データベースからいくつかのものを取得します.1つはUsernameという名前のStringで、もう1つはintという名前のポイントです。私はDBHandlerと呼ばれる、すべてのゲッターとセッターを持っているクラスを持っています。これらの値を取得する際に、私が使用:ストリングを保存してから別のJFrameで使用する

public String getUsername() { 
    return username; 
} 

public void setUsername(String username) { 
    this.username = username; 
} 

public int getPoints() { 
    return points; 
} 

public void setPoints(int points) { 
    this.points = points; 
} 

Iは、これらの値(ポイントがDBHandler.loginメソッド内に設定されている)を使用して設定した場合:ただし

public login(){ 
    DBHandler db = new DBHandler(); 
    db.setUsername(usernameTemp.getText()); 
    db.login(); 

}

を、ときに、別にDBHandlerのインスタンスと呼ばれるJFrameでは、すべての値がnullと思われます。 getterを使って値を取得しますが、それらは常に空です。

public StudentScreen() { 
    DBHandler db = new DBHandler(); 
    initComponents(); 
    showUser.setText(db.getUsername()); 
    showScore.setText("" + db.getPoints()); 
} 

これはかなり単純な問題ですが、私はこれを克服することができませんでした。私はいくつかの記事をチェックしましたが、この問題を理解するのに役立つものは何もありません。 StudentScreenインサイド

よろしく

+1

1)[複数のJFramesの使用、良い/悪い習慣](http://stackoverflow.com/ q/9554636/418556)2)すぐに助けを求めるには、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 –

答えて

2

あなたはそれらのデフォルト値に設定されているすべての値を持つDBHandlerの新しいインスタンスを作成しています。どこでも同じインスタンスを使用する必要があります。シングルトンパターンでこれを達成するか、DBHandlerをパラメータとしてStudentScreenのコンストラクタに渡します。

+0

これはDBHandlerの2つのインスタンスを作成しているということです。データを永続化してsetter/getterで取得する場合は、値を設定したオブジェクトと同じオブジェクトを使用してください。また、オブジェクトの基本的な概念指向プログラミング。オブジェクト作成について理解を深めてください。 –

+0

あなたはこれの例を共有できますか?ファイル間で同じインスタンスを使用するにはどうすればよいでしょうか? –

+1

可能性1: 'Public StudentScreen(){'を 'Public StudentScreen(DBHandler db){'に変更し、そのインスタンスで作業します。このコンストラクタを呼び出すときには、DBHandlerに次のように渡す必要があります。 '... new StudentScreen(db)' 可能性2:シングルトンパターンを使用し、静的コンテキストからアクセスします。 私は最初のアプローチを提案します。 – Thomas

関連する問題