addMouseListener не работает на метке

1

Я использую MouseListner в DefaultTableCellRenderer.

Ярлык должен получить этот символ ==========================

public class CatCustTabRenderer extends DefaultTableCellRenderer implements
    TableCellRenderer {

Icon iconGetDate = new ImageIcon(GUI_RentABook.class.getResource("/images/edit15.jpg"));    
JButton button = new JButton(iconGetDate);

// setOpaque(true);
public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {

    JTableHeader header = table.getTableHeader();
    header.setBackground(OwnConstants.SALTEGREY);
    header.setForeground(Color.white);



    table.getColumnModel().getColumn(0).setPreferredWidth(25);// 0 Numbers
    table.getColumnModel().getColumn(1).setPreferredWidth(60);// 1 Cust-ID
    table.getColumnModel().getColumn(2).setPreferredWidth(160);// 2 Customer
    table.getColumnModel().getColumn(3).setPreferredWidth(50);// 3 ZIP
    table.getColumnModel().getColumn(4).setPreferredWidth(100);// 4 City
    table.getColumnModel().getColumn(5).setPreferredWidth(100);// 5 Street
    table.getColumnModel().getColumn(6).setPreferredWidth(40);// 6 Str-#
    table.getColumnModel().getColumn(7).setPreferredWidth(115);// 7 Phone
    table.getColumnModel().getColumn(8).setPreferredWidth(170);// 8 Email
    table.getColumnModel().getColumn(9).setPreferredWidth(110);// 9 Loan-ID
    table.getColumnModel().getColumn(10).setPreferredWidth(16);// 10 Edit-Icon


    JLabel label = (JLabel) super.getTableCellRendererComponent(table,
            value, isSelected, hasFocus, row, column);  



String returnTTipp = "";
   returnTTipp = "Edit customer values";

    if (value instanceof ImageIcon)              
    {   label.setText(null);
        label.setIcon((ImageIcon)value);        
        label.setToolTipText(returnTTipp); 
        System.out.println("Im RENDERER");
        label.addMouseListener(new MouseAdapter() {
              public void mouseClicked(MouseEvent me) {
                  System.out.println("CLICKED");
                }
              });
    }else {
        label.setIcon(null);
        label.setToolTipText(null); 
    } 

    if ((row % 2) == 1 && !isSelected) {
        label.setBackground(OwnConstants.NAVAJOWHITE);
    } else if ((row % 2) == 0 && !isSelected) {
        label.setBackground(Color.WHITE);
    }


    return label;
}

}

Эта метка является частью таблицы, которая реализуется в GUI-классе. В таблице [ tableCatCustom ] также используется MouseListener. Когда я нажимаю на строку, я получаю ее значения. НО, в строке Позиция 10 находится ярлык (значок). Значок должен иметь MouseListener, который я реализовал (см. Выше).

Здесь MouseListener таблицы ================>

tableCatCustom.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent ev) {
    if (ev.getClickCount() == 1) {

        JTable temp = (JTable) ev.getSource();
        int rowPos = temp.getSelectedRow();
        Object[] rowTemp = new Object[temp.getColumnCount()];

        for (int i = 0; i < rowTemp.length; i++) {

            txtCustID.setText((String) temp.getValueAt(rowPos, 1));
            txtCustomer.setText((String) temp.getValueAt(rowPos, 2));


            // Set LoanID
            if ((String) temp.getValueAt(rowPos, 1) != null)
            {
                loanIDCust = (String) temp.getValueAt(rowPos, 1);
                setLoanID();

            }else{
                lblCatMess.setForeground(Color.RED);
                lblCatMess.setText("No CustomerID found!");
            }

        }
    } else {
        System.out.println("No row is selected correctly!");
    }
}

});

Когда я нажимаю на строку, этот MouseListener работает хорошо. Но в строке также должен быть MouseListener метки (rowpos 10 = icon). Этот MouseListener не работает !!!

Где моя ошибка?

С наилучшими пожеланиями

Wolfgang

Теги:
swing
jlabel
mouselistener

1 ответ

2
Лучший ответ

Средство визуализации НЕ является реальным компонентом. MouseListener не будет работать на рендерере.

Если вы хотите сделать обработку щелчком мыши, вам нужно добавить MouseListener в JTable. В JTable API есть методы, которые позволят вам преобразовать точку мыши в определенную ячейку в таблице.

  • 0
    Привет camickr, спасибо за ответ и подсказку. Я узнаю, как это сделать. С наилучшими пожеланиями, Вольфганг
  • 0
    Привет camickr, у вас есть какие-либо идеи, как получить ячейку в каждом ряду в 10 клум? Я попробовал несколько примеров, но я не получил правильный результат.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню