Iた設定画面によっては、ラベルのIMGを変更するが、私は別のクラスで関数を呼び出すときに、なぜIMGが変化しないために、getCrop()という関数?は、どのように私は情報を取得し、メインに変更するために、他のクラスにアクセスすることができますか?
private JLabel label_9 = new JLabel("");
//This is inside class Normal(main).
public void getCrop(String str) {
switch(str) {
case "4446" : label_9.setIcon(new ImageIcon(Normal.class.getResource("/TryBot/Resources/4446.jpg")));
break;
case "3339" : label_9.setIcon(new ImageIcon(Normal.class.getResource("/TryBot/Resources/3339.jpg")));
break;
case "3446" : label_9.setIcon(new ImageIcon(Normal.class.getResource("/TryBot/Resources/3446.jpg")));
break;
case "4536" : label_9.setIcon(new ImageIcon(Normal.class.getResource("/TryBot/Resources/4536.jpg")));
break;
case "5346" : label_9.setIcon(new ImageIcon(Normal.class.getResource("/TryBot/Resources/5346.jpg")));
break;
case "11115" : label_9.setIcon(new ImageIcon(Normal.class.getResource("/TryBot/Resources/11115.jpg")));
break;
case "4437" : label_9.setIcon(new ImageIcon(Normal.class.getResource("/TryBot/Resources/4437.jpg")));
break;
case "3447" : label_9.setIcon(new ImageIcon(Normal.class.getResource("/TryBot/Resources/3447.jpg")));
break;
case "4347" : label_9.setIcon(new ImageIcon(Normal.class.getResource("/TryBot/Resources/4347.jpg")));
break;
case "3546" : label_9.setIcon(new ImageIcon(Normal.class.getResource("/TryBot/Resources/3546.jpg")));
break;
case "4356" : label_9.setIcon(new ImageIcon(Normal.class.getResource("/TryBot/Resources/4356.jpg")));
break;
case "5436" : label_9.setIcon(new ImageIcon(Normal.class.getResource("/TryBot/Resources/5436.jpg")));
break;
default : label_9.setIcon(new ImageIcon(Normal.class.getResource("/TryBot/Resources/4446.jpg")));
break;
}
}
私の目標は、ここに私の設定ウィンドウ を通じてIMGを変更できるようにすることです誰かがコンボボックスを変更したときIMGがあまりにも変更する必要があるためのコードです。
//City is an array of Strings
public JComboBox comboBox = new JComboBox(City);
comboBox.addActionListener(new ActionListener() {
//this is inside Settings
public void actionPerformed(ActionEvent e) {
Normal cb = new Normal();
System.out.println(comboBox.getSelectedItem());
cb.getCrop(comboBox.getSelectedItem().toString());
}
});
EDIT 1:あなたのすべてに感謝アクセスできるようになりました
:
私は先端
public static void setVillageImg(String str) {
label_9.setIcon(new ImageIcon(Normal.class.getResource("/TryBot/Resources/" + str + ".jpg")));
}
EDIT 2用setVillageImgタンク用getcropを置き換えます。 しかし、ときに私はそれが動作する最初の時間を変更するが、私は再び変更しようとした場合、それは私にエラー
at java.awt.EventDispatchThread.run(Unknown Source)
例外はありますか? ( 'getCrop'メソッドを' Normal'インスタンスの状態を必要としないように静的にするか、 'comboBox'を含むクラスの一部でなければなりません)。 –
その方法の多くは、はるかに小さく書き直すことができます。サポートされている文字列のリストを作成することができます(デフォルト以外のすべての場合)。次に、文字列がリストに含まれているかどうかを確認するだけです。そうであれば、不要なハードコードされた値ではなく、渡された文字列に基づいてアイコンを設定することができます(str [より良い名前を付けることもできます])。 – ManoDestra
getCropメソッドの名前を変更する必要があります。何も取得しないためです。あなたはそれをsetSomeLabelIcon(String strImageId)と呼ぶこともできますが、Some部分をlabel_9ではなくそのラベルとすることができます。これはlabel_9ではなく、より適切に名前を付ける必要があります。 – ManoDestra