gpt4 book ai didi

java - setIcon 不适用于条件

转载 作者:行者123 更新时间:2023-12-02 06:45:29 26 4
gpt4 key购买 nike

当我在数据库连接中使用 if...else... 语句时,它不会正确设置图标。

这是数据库及其值:

Database

JFrame 上有两个标签,专门用于图标。现在只关注这些标签之一,因为它们的功能相同。

当提取记录时,其中一列“MSGTYPE”包含“INFORMATION”、“ANNOUNCMENT”、“AWARD”或“WARNING”。 JLabel 的图标必须将图像与消息类型相匹配,例如。如果当前记录是公告,则图标需要为“公告”图标。发生的情况是,我使用 if...else... 语句,但它默认为 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#uSERn@me, "some#P@$$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

JFrame也是这样显示的:(忽略不显示的字段)

* 您会注意到公告与信息具有相同的图标 *

The Frame in all its glory

最佳答案

问题在于String比较。由于 == 运算符检查,您的 if 语句不会产生 true

比较对象/字符串时,需要使用 equals() 方法而不是 ==。

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

更好的是,您可以在评估字符串时使用 switch 语句

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");
}

如果添加/删除任何公告类型,这将提供更易于管理的语法。

关于java - setIcon 不适用于条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18683902/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com