2

クラス「ビジュアル」でメソッドを使用してコード行を JTextArea に書き込もうとしていますが、「ビジュアル」から呼び出すと出力されますが、「ログイン」から呼び出すとテキストのみがコンソールに出力されます、TextArea ではありません。

private static Visual Visual;
Visual.WriteLine("I'm sorry, your username or password is incorrect. Please try again.");

また

private static Visual Visual = new Visual();
Visual.WriteLine("I'm sorry, your username or password is incorrect. Please try again.");

「ログイン」フォームを使用しないでください

しかし、

WriteLine("Test"); 

メソッドが含まれるクラスである「Visual」から機能します。

「ビジュアル」の方法は次のとおりです

public void WriteLine(String Text) {
    System.out.println(Text);
    SystemFeed.append(Text.toString() + "\n");
    SystemFeed.setCaretPosition(SystemFeed.getDocument().getLength());
}
4

1 に答える 1

3

これまでに提示された情報に基づいて推測することしかできませんが (つまり、問題についてより適切な情報を提供してください!)、参照の問題が発生している可能性があるのではないかと心配しています。表示されているものと同じです。提案:

  • Visual 変数を含むすべての不要な静的変数を取り除きます。それらをインスタンス変数にします。
  • これを行ってエラーが発生した場合の解決策は、Visual を静的にするのではなく、このクラスの適切なインスタンスへの参照を取得することです。
  • プログラムが呼び出した回数を確認してくださいnew Visual(...)。この呼び出しは 1 回だけ行う必要があります。System.out.println("New Visual created")これがそうであることを確認するために、Visual コンストラクターにa を入れることを検討してください。
  • 視覚化された GUI への有効な参照を、このオブジェクトのメソッドを呼び出す必要があるすべてのオブジェクトに渡します。したがって、Login オブジェクトが Visual オブジェクトのメソッドを呼び出す必要がある場合は、Loginpublic void setVisual(Visual visual)に正しい Visual 参照を受け入れるメソッドを与え、Login クラスのセットアップ中にこのメソッドが 1 回呼び出されるようにしてください。 Login では、この参照を使用して Visual メソッド呼び出しを行います。

繰り返しますが、これが役に立たない場合は、できればsscceを教えてください。

于 2012-10-01T21:34:15.217 に答える