gpt4 book ai didi

java - addMouseListener 不适用于标签

转载 作者:行者123 更新时间:2023-11-30 03:55:42 25 4
gpt4 key购买 nike

我在 DefaultTableCellRenderer 中使用 MouseListner

标签应该得到这个============================>

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 不起作用!!!

我的错误在哪里?

致以诚挚的问候

沃尔夫冈

最佳答案

渲染器不是真正的组件。 MouseListener 不适用于渲染器。

如果您想对鼠标单击进行处理,则需要将 MouseListener 添加到 JTable。 JTable API 中的一些方法允许您将鼠标点转换为表中的特定单元格。

关于java - addMouseListener 不适用于标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23250310/

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