2016-01-09 6 views
0

Я создал окно JFrame с JComboBox. Я могу выбирать вещи, но они ничего не делают. Я думал, что event был String, но это не так. Какое решение для этого?Как создать строку с результатом выпадающего меню?

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); 
    } 
} 
+0

Сравните 'String' с 'equals', а не с' == '. – user1803551

+0

Вы имеете в виду: if (event.equals ("b.png")) { –

+0

Не сравнивать строки, используя '==' или '! ='. Используйте вместо этого метод 'equals (...)' или 'equalsIgnoreCase (...)'. Поймите, что '==' проверяет, соответствуют ли две ссылки на объекты *, которые вас не интересуют. Методы, с другой стороны, проверяют, имеют ли две строки одни и те же символы в одном порядке, и это то, что дело здесь. –

ответ

3

Вы должны получить выбранный элемент (который является String в вашем случае) и сравнить его в строку с equals:

if ("b.png".equals(event.getItem())) 

Следует отметить, что это предпочтительнее

event.getItem().equals("b.png") 

, поскольку это теоретически может дать NPE.

Кроме того, используйте общий тип: JComboBox<String>, а не сырой тип.