gpt4 book ai didi

类中的 Java MouseListener

转载 作者:行者123 更新时间:2023-12-01 22:54:59 25 4
gpt4 key购买 nike

我是 Java 新手,希望实现以下目标。

我有各种组合框。对于每个组合框,我都有一个按钮可以清除组合框的内容。清除按钮是从我创建的通用 ClearComboBoxButton 类创建的。作为此 ClearComboBoxButton 类的一部分,我想添加一个 MouseListener 来清除与其关联的组合框

当我创建按钮时,关联的组合框作为参数传递。

这就是我现在所拥有的。 (我的按钮已成功创建,但监听器似乎没有触发)

public class ClearComboBoxButton extends JXButton implements MouseListener{
private JXComboBox cboComboBox;
private static final long serialVersionUID = 1L;
public ClearComboBoxButton(JXComboBox cboComboBox){
super();
this.setCboComboBox(cboComboBox);
setPreferredSize(new Dimension(20, 20));
setMinimumSize(new Dimension(20,20));
setMaximumSize(new Dimension(20, 20));
setToolTipText("Clear");
setIcon(new ImageIcon("C:\\Java\\icons\\cancel.png"));
}
public void mouseClicked(MouseEvent arg0, JXComboBox cboComboBox) {
System.out.println("Cleared");
this.setCboComboBox(cboComboBox);
cboComboBox.setSelectedIndex(-1);
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub

}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub

}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub

}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub

}
public JXComboBox getCboComboBox() {
return cboComboBox;
}
public void setCboComboBox(JXComboBox cboComboBox) {
this.cboComboBox = cboComboBox;
}
}

最佳答案

首先,mouseClicked() 方法不执行任何操作:

@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}

其次,为了调用您的监听器,应将其添加到触发鼠标事件并且您想要监听的组件中。由于您的按钮想要了解自身触发的事件,因此您需要

this.addMouseListener(this);

但是你不应该使用MouseListener来监听按钮点击。应该使用 ActionListener 来实现此目的。首先,因为它在语义上更简单、更正确。其次,因为许多用户使用键盘来单击按钮。

我个人会避免扩展 JXButton,而是使用组合。我还会使用匿名类作为监听器,而不是让您的类实现它。

关于类中的 Java MouseListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24222618/

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