私は何をしようとしているのは、私のJLabelのテキストを別のクラスから編集することです。私はlabel.setText( "bla bla")でそれを行います。私のJLabelには影響しません。別のクラスからJLabelテキストを編集する
GUIクラスで私のコードは、このような何かをlookes:
public class GUI {
JFrame f1 = new JFrame("GUI");
JLabel l1 = new JLabel("Output");
JTextField tf1 = new JTextField("");
public run(){ // main calls this method.
Listener listener = new Listener();
f1.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
f1.setBounds(450, 170, 400, 400);
f1.setVisible(true);
f1.setResizable(false);
f1.setLayout(null);
l1.setBounds(8, 8, 200, 30);
listener.listen(tf1);
f1.add(l1);
}
}
し、私は、ユーザーの入力に応じて、JLabelのに変更を加えることになっているこのリスナークラスを持っています。コードは次のとおりです。
メソッドeverythingOKは完全に機能します。あなたはその1つを信頼する必要があります。 JLabelを静的なものとして定義すると動作しますが、初めて動作します。最初の変更後、JLabelに変更が表示されなくなりました。静的な定義は私を助けません。このコードに何が間違っているかを知っている人がいることを願っています。私は非常に長いコードの最も重要な部分だけを取ったので、明らかな間違いがあるかどうか気にしないでください。
ありがとうございます。
public boolean everythingOK() {
if (hasInt(tf1) && isValid(tf1)) {
return true;
} else {
return false;
}
}
public boolean hasInt(JTextField textfield) {
try {
Integer.parseInt(textfield.getText());
return true;
} catch (NumberFormatException e) {
return false;
}
}
public boolean isValid(JTextField textfield) {
if (hasInt(textfield)) {
if (Integer.parseInt(textfield.getText()) >= minValue && Integer.parseInt(textfield.getText()) <= maxValue) {
return true;
} else {
return false;
}
} else {
return false;
}
}
「最初の変更後、JLabelに変更は表示されません」 - 「すべて」が「OK」で、同じテキストがJlabelに毎回表示されている可能性がありますか? –
2回の呼び出しの間に 'everythingOK()'が変更されていますか? – GETah
OK今度は私の投稿をeverythingOKのコードで更新しました –