Java 管理多个Jlabel事件

Java 管理多个Jlabel事件,java,events,jlabel,actionlistener,cardlayout,Java,Events,Jlabel,Actionlistener,Cardlayout,我有一个带有多个jLabel的左面板,我使用它们作为按钮来更改主面板的内容,主面板使用CardLayout进行布局 我无法完美地处理这些事件: mouseEntered : to make highlight effect to the jlabel mouseExited : to take off the highlight effect. mouseClicked : to change the content of the main Panel and start some thre

我有一个带有多个jLabel的左面板,我使用它们作为按钮来更改主面板的内容,主面板使用CardLayout进行布局

我无法完美地处理这些事件:

mouseEntered : to make highlight effect to the jlabel 
mouseExited  : to take off the highlight effect.
mouseClicked : to change the content of the main Panel and start some threads
这里的问题是找不到事件或方法,它告诉我已单击另一个Jlabel,因此我可以停止在mouseClicked事件中启动的线程


事件或方法告诉我CardLayout中的JPanel已显示或隐藏。

您的问题是找不到合适的事件。我认为您正在使用一个可视化GUI构建器来实现这一点,并希望能够解决所有问题。这样做行不通,您需要编写一些真正的代码。例如,编写一个方法,您将从三个jlabel中的每个jlabel的鼠标单击侦听器调用该方法。因此,您将安排为每次JLabel单击调用此方法。然后在方法中做适当的处理。这只是一个粗略的轮廓,您没有提供太多细节来提供进一步的建议

听起来你需要焦点事件和焦点监听器。所有JC组件都支持这些功能,比如JPanel、JLabel和JButton,比如调用addFocusListener

基本上,FocusListener可以告诉您某个JComponent何时获得焦点,例如单击该JComponent,以及何时失去焦点,例如单击另一个JComponent


有关更多信息,请参阅

不,我没有使用GUI builder,这不是一个期望解决所有问题的问题,我只是想知道是否有这样的事件需要处理,以使其变得简单。正如你所说,我已经编写了一个方法,但它没有帮助,因为我正在为每张卡片重构多个class a类中的代码。那么你是在寻找一个全局事件吗?一个可以点燃容器内任何地方点击的东西的装置?我相信在AWT/Swing框架中没有这样的事件,与JavaScript/HTML.Thank形成对比,但这没有帮助,因为当Jlabel1获得焦点时,他可以通过单击主面板来释放他,而这不是我想要的。