J'ai créé une fenêtre JFrame
avec un JComboBox
. Je peux sélectionner des choses mais elles ne font rien. Je pensais que event
était un String
, mais ce n'est pas le cas. Quelle est la solution pour cela?Comment créer une chaîne avec le résultat d'un menu déroulant?
import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Gui extends JFrame {
private JComboBox box;
private JLabel picture;
private static String[] filename = {"", "b.png", "x.png"};
public Gui() {
super("the title");
setLayout(new FlowLayout());
box = new JComboBox(filename);
box.addItemListener(
new ItemListener() {
public void itemStateChanged(ItemEvent event) {
if(event.getStateChange()==ItemEvent.SELECTED){
System.out.println("test");
if(event=="b.png") {
System.out.println("test2");
}
}
}
});
add(box);
}
}
Comparez 'String's avec' equals', pas avec '=='. – user1803551
Vous voulez dire: if (event.equals ("b.png")) { –
Ne comparez pas les chaînes en utilisant '==' ou '! ='. Utilisez la méthode 'equals (...)' ou la méthode 'equalsIgnoreCase (...)' à la place. Comprenez que '==' vérifie si les deux * références d'objet * sont identiques ce qui n'est pas ce qui vous intéresse. Les méthodes d'un autre côté vérifient si les deux Strings ont les mêmes caractères dans le même ordre, et c'est ce que questions ici. –