私は、ユーザーのための待機が何かに入れていることのJTextFieldを持っている簡単なGUIを持っています。ボタンがクリックされた後、プログラム:
- 、入力を読み込み、文字列変数に保存します。
- 空のJLabelを含む、(別のクラスファイルである)新たなGUIを開き、そこにJLabelのテキストを変更することに文字列変数を渡します。
問題は、私は再描画のようになど()、再検証を()、物事を追加し、コードを再構成しよういかに難しいかに関係なく、第二のGUI滞在中のJLabelが空ということです。System.out.println(jLabel.getTextを())を使用すると、テキスト値が実際に変更しましたが、表示されていないことが明らかになりました。それは私がそれを示して欲しいものと思いますので、どのように私は、このJLabelのを「リフレッシュ」しますか?私は、ユーザーがGUIを更新するために何かをクリックする必要はありませんが、それが開始されますよう、値があるはずです、私はイベントを追加することができます知っています。私はいくつかの類似した記事トラフ読みますが、解決策は、私のために仕事をしないことを発見しました。
最初のGUIのボタンクリックイベントのコード:
private void sbuttonActionPerformed(java.awt.event.ActionEvent evt) {
errortext.setText("");
Search = sfield.getText();
Transl = hashes.find(Search);
if (Transl.equals("0")) errortext.setText("Word not found in database.");
else {
ws.run(Search, Transl); // <- this opens the second GUI, with two String parameters I want to display in the second GUI;
}
}
第二のGUIのコード(activeword、翻訳は私に迷惑を与えているのJLabelです。):
public void run(String Search, String Transl) {
WordScreen init = new WordScreen(); //initialise the second GUI;
init.setVisible(true);
activeword.setText(Search);
translation.setText(Transl);
}
任意の応答は非常に歓迎です!必要であれば、私はできるだけ早く返信することを確認しますコードの詳細については、私に聞いてください!
最適なソリューション:関心の2つの文字列を受け入れるように変更WordScreenのコンストラクタ:
これから:
public void run(String Search, String Transl) {
WordScreen init = new WordScreen(); //initialise the second GUI;
init.setVisible(true);
activeword.setText(Search);
translation.setText(Transl);
}
これに:
public void run(String search, String transl) {
WordScreen init = new WordScreen(search, transl);
init.setVisible(true);
}
そして、WordScreenコンストラクタに必要なこれらの文字列を使用します。
public WordScreen(String search, String transl) {
JLabel someLabel = new JLabel(search);
JLabel otherLabel = new JLabel(transl);
// put them where needed
}
私はあなたがまともな投稿せずに包括的な答えを作成することはできませんMREを
余談として、あなたは学び、使用したいと思うでしょうJavaの命名規則を。変数名はすべて大文字でクラス名しばらく下文字で始まる必要があります。これを学習し、これを、次のことは、私たちはより良いあなたのコードを理解することができます、そしてあなたがより良い他の人のコードを理解することができるようになります。