Java 图标值不为';是否使用鼠标单击侦听器更改为jtable中的下一个分配图标?

Java 图标值不为';是否使用鼠标单击侦听器更改为jtable中的下一个分配图标?,java,swing,jtable,tablecellrenderer,mouseclick-event,Java,Swing,Jtable,Tablecellrenderer,Mouseclick Event,“我无法使用鼠标单击侦听器将我的图标更改为另一个图标。问题是,当我双击该图标时,它会显示图标的路径,要将该图标更改为另一个图标,我必须单击另一个单元格并单击返回该单元格,然后其图标值更改为下一个图标` private void studentMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code her

“我无法使用鼠标单击侦听器将我的图标更改为另一个图标。问题是,当我双击该图标时,它会显示图标的路径,要将该图标更改为另一个图标,我必须单击另一个单元格并单击返回该单元格,然后其图标值更改为下一个图标`

    private void studentMouseClicked(java.awt.event.MouseEvent evt) {                                     
        // TODO add your handling code here:
        //((JLabel)cell).addMouseListener(null;



        int row = student.getSelectedRow();

        int column  =student.getSelectedColumn();

         Object value = student.getValueAt(row, column);
         JLabel jl1;
        ImageIcon icon1 = new ImageIcon(getClass().getResource("dash.png"));
        if(value.equals("file:/C:/Users/Admin/Documents/NetBeansProjects/attendance/build/classes/attendance/dash.png")){

        //   "dash.png

            ImageIcon icon = new ImageIcon(getClass().getResource("1425438648_tick-button.png"));
            student.setValueAt(icon, row, column);
            student.getColumnModel().getColumn(column).setCellRenderer(new UpdateCellRenderer());
            ((AbstractTableModel)student.getModel()).fireTableDataChanged();
        }
        else if(value.equals("file:/C:/Users/Admin/Documents/NetBeansProjects/attendance/build/classes/attendance/1425438716_cross-button.png")){
           // "1425438716_cross-button.png"
            ImageIcon icon = new ImageIcon(getClass().getResource("dash.png"));
            student.setValueAt(icon, row, column);
            student.getColumnModel().getColumn(column).setCellRenderer(new UpdateCellRenderer());
            ((AbstractTableModel)student.getModel()).fireTableDataChanged();
        }

       else if(value.equals("file:/C:/Users/Admin/Documents/NetBeansProjects/attendance/build/classes/attendance/1425438648_tick-button.png")){

            ImageIcon icon = new ImageIcon(getClass().getResource("1425438716_cross-button.png"));
            student.setValueAt(icon, row, column);
            student.getColumnModel().getColumn(column).setCellRenderer(new UpdateCellRenderer());
            ((AbstractTableModel)student.getModel()).fireTableDataChanged();

        }
    }                            

package attendance;

/**
 *
 * @author Admin
 */

import java.awt.Color;
import java.awt.Component;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.swing.Icon;
import javax.swing.ImageIcon;

import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellEditor;
public class UpdateCellRenderer extends DefaultTableCellRenderer{

    Connection conn = null;
    ResultSet rs = null;
    PreparedStatement pst = null;
        @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
    {

         Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
               column);
      ((JLabel)cell).setIcon((Icon)value);
      ((JLabel)cell).setText("");
      ((JLabel)cell).setHorizontalAlignment(JLabel.CENTER);

      if (isSelected) {

         cell.setBackground(Color.white);
      } else {
         cell.setBackground(null);
      }
      //mysql query has to be pasted here.here change the value of particular row, columnin database.column will get us the day and row will get us the roll number. 
     /*        String value1 = (String)value;

            if(value1.equals("file:/C:/Users/Admin/Documents/NetBeansProjects/attendance/build/classes/attendance/1425438648_tick-button.png"))
    {

        Object name = table.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();
         //below line will help me to get particular column.
         String namesql = (String)name;
        try{
            String sql = "update class_second set "+namesql+" = p where  roll_number = "+ (row+1);
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "akshay");
            pst = conn.prepareStatement(sql);
            pst.executeUpdate();


        }catch(Exception e)
        {
            JOptionPane.showMessageDialog(null, e);
        }
    }

            else if(value1.equals("file:/C:/Users/Admin/Documents/NetBeansProjects/attendance/build/classes/attendance/dash.png"))
    {

        Object name = table.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();
         //below line will help me to get particular column.
         String namesql = (String)name;
        try{
            String sql = "update class_second set "+namesql+"=h where  roll_number ="+ (row+1);
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "akshay");
            pst = conn.prepareStatement(sql);
            pst.executeUpdate();


        }catch(Exception e)
        {
            JOptionPane.showMessageDialog(null, e);
        }
    }

                   else if(value1.equals("file:/C:/Users/Admin/Documents/NetBeansProjects/attendance/build/classes/attendance/1425438716_cross-button.png"))
    {

        Object name = table.getTableHeader().getColumnModel().getColumn(column).getHeaderValue();
         //below line will help me to get particular column.
         String namesql = (String)name;
        try{
            String sql = "update class_second set "+namesql+" = a where  roll_number ="+ (row+1);
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "akshay");
            pst = conn.prepareStatement(sql);
            pst.executeUpdate();


        }catch(Exception e)
        {
                ` JOptionPane.showMessageDialog(null, e);`
        }
    }
      */

        return cell;
}
}`

1) 为了更快地获得更好的帮助,发布一个(最小完整的可验证示例)或(简短、自包含、正确的示例)。2)获取示例图像的一种方法是热链接到中看到的图像。如果需要更多信息,请点击此处!(如果需要更多信息,请点击此处!)“你需要更多关于链接到MCVE的信息吗?!”?!?为什么要不断更改列的渲染器?创建表时应设置渲染器。不要调用fireTableChanged(…)。调用该方法是TableModel的工作,而不是应用程序代码。但我需要在单击单元格时将图标更改为另一个图标。