どこでも検索しましたが、解決策が見つからないため、私は本当に大きな問題を抱えています。
行全体を永遠に黄色にしたい。黄色の行は、顧客が既に支払ったことを示します。その後、行を選択して他の操作 (更新、削除など) を実行できるようにする必要があります (選択した行は青、その他は白である必要があります)。しかし、それはすべてめちゃくちゃになり、最終的には、押したばかりのすべての行が黄色になり、その理由がわかりません. カスタム tableCellRenderer を使用しています。
その行が支払われたかどうかを確認する必要がありますか? 黄色か青のどちらかで色を付けますか?
teilnehmertable.setDefaultRenderer(Object.class, new MyTableCellRender(teilnehmertable.getSelectedRow()));
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://10.0.0.1:3306/askoedb", "name", "pw");
stmt = con.createStatement();
rs1 = stmt.executeQuery("SELECT bezahlt FROM askoedb.teilnehmer");
while (rs1.next()) {
System.out.println(rs1.getString(1));
if (rs1.getString(1) != null) {
if (selectedRow != -1) {
if (row == selectedRow) {
setForeground(Color.black);
setBackground(Color.yellow);
} else {
setForeground(Color.black);
setBackground(Color.white);
}
}
setText(value != null ? value.toString() : "");
} else {
if (selectedRow != -1) {
if (row == selectedRow) {
setForeground(Color.white);
setBackground(Color.blue);
} else {
setForeground(Color.black);
setBackground(Color.white);
}
}
}
}
return this;
} catch (ClassNotFoundException | SQLException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
con.close();
} catch (SQLException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
}
return this;
}