データベース接続で if...else... ステートメントを使用すると、アイコンが正しく設定されません。
これは、その値を持つデータベースです。
JFrame には、特にアイコン用の 2 つのラベルがあります。これらのラベルは同じように機能するため、ここではこれらのラベルの 1 つに焦点を当てます。
レコードが抽出されると、「MSGTYPE」列の 1 つに「INFORMATION」、「ANNOUNCEMENT」、「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 も次のように表示します: (表示されないフィールドは無視してください)
*お知らせには情報と同じアイコンが付いていることに注意してください*