- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 JLabel
数组,还有一个包含 MouseAdapter
的列表列表。这个想法是每个 JLabel
都有一个 MouseAdapter
列表。我想迭代这些列表并将 MouseAdapter
添加到每个 JLabel
。
JLabel[] labels;
ArrayList<ArrayList<MouseAdapter>> labelBehaviors;
但是,您无法将 MouseAdapter
添加到 JComponent
:它们必须转换为 MouseListener
、MouseMotionListener
等,然后添加相应的方法。除了确定 MouseAdapter
是否是 MouseListener
、MouseMotionListener
等的实例,然后进行转换之外,还有什么方法可以做到这一点它并用正确的方法添加它?
我正在尝试这样做:
for ( int i = 0; i < LABEL_COUNT; i++ ) {
JLabel label = labels[i];
if ( label != null ) {
// Add associated behaviors to the label.
for ( MouseAdapter behavior : labelBehaviors.get( i ) ) {
// addMouseEventListener() doesn't exist...
label.addMouseEventListener( behavior );
}
}
}
我不想做这样的事情,除非没有更简单的方法:
for (int i = 0; i < LABEL_COUNT; i++ ) {
JLabel label = labels[i];
if ( label != null ) {
// Add associated behaviors to the label.
for ( MouseAdapter behavior : labelBehaviors.get( i ) ) {
// Check type of behavior.
if ( behavior instanceof MouseListener ) {
label.addMouseListener( (MouseListener) behavior );
} else if ( behavior instanceof MouseMotionListener ) {
label.addMouseMotionListener( (MouseMotionListener) behavior );
} else if ( behavior instanceof MouseWheelListener ) {
label.addMouseWheelListener( (MouseWheelListener) behavior );
}
}
}
}
有没有更简单的方法,也许涉及labelBehaviors
的类型签名?
最佳答案
MouseAdapter
实现所有三个接口(interface)。如果这些方法没有被重写,它们将不会执行任何操作。简而言之,您可以跳过这些检查,因为由于声明,所有这些检查都会返回 true
public abstract class MouseAdapter implements MouseListener, MouseMotionListener, MouseWheelListener
简化的循环是
for ( MouseAdapter behavior : labelBehaviors.get( i ) ) {
label.addMouseListener( behavior );
label.addMouseMotionListener( behavior );
label.addMouseWheelListener( behavior );
}
关于java - 将 MouseAdapter 列表的所有元素添加到 JComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24741554/
我为我的 JPanel 编写了一个 MouseAdapter,但它表现得很奇怪,这里是代码本身,其中包含从文档中覆盖的所有可能操作。 private class MAdapter extends Mo
在我制作的游戏中,我有两种不同的 mousePressed() 方法,一种用于单发射击,一种用于自动射击,如果你得到一把自动武器,它会改变 mousePressed () 方法从单发到自动开火。 稍后
为什么我不能使用MouseAdapter的mouseMoved()来获取光标位置?我想在移动鼠标时得到它并在终端中显示它。 我怎样才能做到这一点? import java.awt.event.Mous
我有一组 JPanel,我正在尝试为每个 JPanel 添加一个鼠标适配器,以便可以识别单击了哪个 JPanel,然后更改其背景颜色。一切似乎都工作正常,除了当我从 Eclipse 运行它时,会出现一
我正在尝试学习适配器类。我从我正在阅读的书中看到了一段代码。这是代码: import java.awt.*; import java.awt.event.*; import java.applet.*
如果我使用 addMouseListener 注册一个组件,然后我将一个新的 MouseAdapter 传递给它没有生成 Action 事件,因为我必须使用 addMouseMotionListene
名称(和 javadoc)暗示 MouseAdapter 是一个适配器(设计模式)。但我不这么认为——它不适应任何事物,至少乍一看是这样 唯一发生的改编是您可以将 MouseAdapter 的实例传递
我需要编写一个 Java Swing 应用程序,该应用程序将在 Linux、Windows 和 Mac 上运行并表现得大致相同。对于我创建的几乎所有小部件,我需要添加一些特殊处理,包括所有内容都需要能
我的应用程序的窗口可以通过拖动其菜单栏来移动。但是,我不明白为什么必须使用 MouseMotionAdapter() 来实现此功能。 两个类都有方法:mouseDragged(),因此我删除了Mous
我注意到了这一点(它是一个 java.awt.event 类)。 public abstract class MouseAdapter implements MouseListener,
我有一个 JLabel 数组,还有一个包含 MouseAdapter 的列表列表。这个想法是每个 JLabel 都有一个 MouseAdapter 列表。我想迭代这些列表并将 MouseAdapter
我创建了一个方法来拖动我想要的任何Component,甚至是JFrame 我使用 MouseInputAdapter 来创建函数 我使用鼠标事件和鼠标 Action 事件 public static
我正在使用 JFrame 开发一个程序,我想意识到,当您单击按钮时,其他类中的循环必须起作用。它正在工作,但速度很慢。一秒钟内您只能看到循环的一次迭代。我不明白为什么。您需要了解一些代码。调用监听器:
我目前正在尝试为名为 Carcassone 的游戏创建应用程序,但在将 JLayeredPane 与 MouseAdapters 结合使用时遇到问题。 目前我有一个 JLayeredPane,其中包含
我有一个 MouseAdapter,只需单击其背景即可拖动窗口,如下所示: public class Dragger extends MouseAdapter{ private Point offse
我有以下方法: public static void createDialog(Button b, String message) { MouseListener mouseListener
有时会执行 mousePressed 事件,但有时则不会。这似乎还取决于您按下它的时间。我怎样才能让它始终工作? 我不确定代码的哪一部分有问题,所以这是整个类: import java.awt.Col
我创建了以下小程序--> import java.awt.*; import java.awt.event.*; import java.applet.*; public class Adapting
我在我的 Java GUI 中使用 jLayeredPane。我在我的 jLayeredPane 的 DEFAULT_LAYER 上添加了一些面板 (jPanelsLayer1),而且每个 jPane
只是想知道创建需要处理鼠标点击和按键的类的最佳实践方法是什么。显然不可能在 Java 中继承多个类,所以目前我正在使用 MouseListener 和 KeyListener 接口(interface
我是一名优秀的程序员,十分优秀!