2013-09-08 4 views
0

Когда я использую инструкции if ... else ... с подключениями к базе данных, он не будет правильно устанавливать значок.setIcon не работает с условиями

Это база данных с его значениями:

Database

фрейму имеет две надписи на нем, в частности, для икон. Куда только сейчас сосредоточиться на одном из этих лейблов, потому что они функционируют одинаково.

Случается, что при извлечении записи один из столбцов «MSGTYPE» содержит либо «ИНФОРМАЦИЯ», «ОБЪЯВЛЕНИЕ», «НАГРАД», либо «ПРЕДУПРЕЖДЕНИЕ». значок JLabel должен соответствовать изображению с типом сообщения, например. Если текущая запись является объявлением, значок должен быть значком «объявление». Что происходит, это то, что я использую if ... else ... statements, но по умолчанию используется оператор else. См. Код ниже.

try { 
    String sql = "Select * from app.EBULLETINS ORDER BY msgid DESC FETCH FIRST 2 ROWS ONLY"; 
    Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); 
    Class.forName("org.apache.derby.jdbc.ClientDriver"); 
    Connection con = (Connection) DriverManager.getConnection("jdbc:derby://localhost:1527/GTPADB", "some#[email protected], "some#[email protected]$$w0rd"); 
    Statement stmt = con.createStatement(); 
    ResultSet rs = stmt.executeQuery(sql); 

    if (rs.next()) { 
      eBul1_Title = rs.getString("Title"); 
      eBul1_Msg = rs.getString("Msg"); 
      eBul1_Type = rs.getString("MSGTYPE"); 
    } 

    eBul1T.setText(eBul1_Title + "/" + eBul1_Type); 
    eBul1M.setText(eBul1_Msg); 
    System.out.println("Setting Icons"); 

    if (eBul1_Type == "INFORMATION") { 
      TypeImage1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Information.png"))); 
      System.out.println("Info"); 
    } 
    else if (eBul1_Type == "ANNOUNCEMENT") { 
      TypeImage1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/announcement.png"))); 
      System.out.println("Announce"); 
    } 
    else if (eBul1_Type == "WARNING") { 
      TypeImage1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Warning.png"))); 
      System.out.println("Warning"); 
    } 
    else if (eBul1_Type == "AWARD") { 
      TypeImage1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/award.png"))); 
      System.out.println("Award"); 
    } 
    else { 
      TypeImage1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Information.png"))); 
      System.out.println("Other"); 
    } 
} 
catch (Exception eB1Exc) { 
    JOptionPane.showMessageDialog(this, eB1Exc); 
} 

При запуске, это выводит следующую printlns:

1. Setting Icons 
2. Other 
3. Other 

фрейм также показывает это следующим образом: (Игнорировать поля, которые не показывают)

* Вы отметите что Объявление имеет тот же значок, что и информация *

The Frame in all its glory

+0

Возможный дубликат [Java String.equals versus ==] (http://stackoverflow.com/questions/767372/java-string-equals-versus) –

+0

Возможный дубликат [Как сравнить строки в Java?] (http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) –

ответ

2

проблема String сравнение. Ваше заявление if не связано с true из-за ошибки ==.

Для сравнения объектов/строк вам необходимо использовать метод equals() вместо ==.

if (eBul1_Type.equals("INFORMATION")) { 

еще лучше, вы можете использовать переключатель заявление при оценке Strings

switch (eBul1_Type) { 
    case "INFORMATION": 
      typeImage1.setIcon(...); 
      System.out.println("Info"); 
      break; 
    case "ANNOUNCEMENT": 
      typeImage1.setIcon(...); 
      System.out.println("Info"); 
      break; 
    case "WARNING": 
      typeImage1.setIcon(...); 
      System.out.println("Warning"); 
      break; 
    case "Award": 
      typeImage1.setIcon(...); 
      System.out.println("Award"); 
      break; 
    default: 
     typeImage1.setIcon(...); 
     System.out.println("Other"); 
} 

Это обеспечит более простой синтаксис для управления должны любые типы объявлений будут добавлены/удалены.

+0

Конечно !!!! Смотрите, это то, что происходит, когда я постоянно программирую более восьми часов подряд без перерыва. Я знаю это, и это общая логика, но усталость> логика. Благодарю. –

Смежные вопросы