私ははるかに大きなプログラムを構築していますが、いくつかの方法を試しましたが、現在はこの方法が好きです。この例で使用されているコードは、コード全体を貼り付けることなくアイデアを得るためのものです。Java - ラベルの悪い習慣を編集するのに、このクラスを使用していますか?
このコード(以下に貼り付けます)は、ラベルとスタティックメソッドを使用してラベルを編集する新しいClassMainオブジェクトを作成します。 ClassEditorはClassMainからインスタンス化され、ボタンを返します。
ここで私はそれが悪い習慣であるかどうかを知りたがっています。クリックすると、ClassMainの静的メソッドが呼び出され、そのラベルが乱数に設定されます。私が実際にClassMainオブジェクトの直接インスタンス化からメソッドを呼び出すわけではないので、私はそれが悪い習慣であるかどうか疑問に思っている理由は、私だけです:ClassMain.setLabel("");
。そして、私はこれが何を呼んでいるのか完全にはわからない。私はClassMainのインスタンスを1つ持っていますが、複数の場合はまだ動作しますか?では、参照変数を使用するのではなく、このようにして作成されたオブジェクトのアスペクトをどのように編集できますか?私が複数のクラスを持っていたら、それは問題を作りますか?
ご迷惑をおかけして申し訳ございませんが、正確に質問するのは難しいです。以下のコードを用意して、私が何をしているかを見ることができます。
PS:ClassMainの複数のオブジェクトの問題であるとの問題に関して、私は両方のウィンドウに両方のボタンを作成して、1つのラベルのみを更新しました。どうしてこれなの?これは、1つのインスタンス化に使用すると悪い習慣ではないが、それ以上使用すると悪いことを意味するのだろうか?私は誰かがこれらの問題で私を助けることを願っています!
ClassMain:は
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ClassMain extends JFrame {
private static JLabel l;
public static void main(String[] args) {
new ClassMain();
}
public ClassMain() {
super("This is my app");
setSize(450,80);
setLayout(new GridLayout(0,2));
l = new JLabel("Hi");
ClassEditor ce = new ClassEditor();
add(l);
add(ce.getButton());
setVisible(true);
}
public static void setLabel(String stringA) {
l.setText(stringA);
}
}
ClassEditor:私を助けることができる誰にでも
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class ClassEditor implements ActionListener {
public ClassEditor() {
ClassMain.setLabel("Click the button for a random number!");
}
public JButton getButton() {
JButton b = new JButton("Click me!");
b.addActionListener(this);
return b;
}
public void actionPerformed(ActionEvent arg0) {
int i = (int) (Math.random()*10);
ClassMain.setLabel("Random Number: "+i);
}
}
ビッグおかげで、非常に感謝しています。良い習慣を学び理解している理由と、それが働く理由。
これは完全にうまくいきます。あなたは1つのラベルしか持たないでしょう。代わりに 'CalssMain.getLabel()。setText(text);'のようなものでラベル自体を返すことも考えられます。 – rtheunissen