Как реализовать поведение при наведении курсора в Piccolo2D?
Как проще всего реализовать "поведение при наведении" в Piccolo2D?
Т.е. изменить цвет объекта или стиль, когда курсор мыши находится над ним? Необходимо правильно учитывать как входы, так и выходы.
1 ответ
Вы можете добавить входные обработчики событий к узлам. Ниже приведен основной пример, который придает PBasicInputEventHandler
в слой, чтобы захватить mouseEntered
а также mouseExited
События. Также возможно добавить обработчик событий для отдельных узлов в слое.
import java.awt.Color;
import javax.swing.SwingUtilities;
import edu.umd.cs.piccolo.event.PBasicInputEventHandler;
import edu.umd.cs.piccolo.event.PInputEvent;
import edu.umd.cs.piccolo.nodes.PPath;
import edu.umd.cs.piccolox.PFrame;
public class DemoInputHandler {
@SuppressWarnings("serial")
private static void createAndShowUI() {
new PFrame() {
@Override
public void initialize() {
PPath node = PPath.createRectangle(0, 0, 100, 100);
node.setOffset(50, 50);
node.setPaint(Color.BLUE);
getCanvas().getLayer().addChild(node);
node = PPath.createRectangle(0, 0, 100, 100);
node.setOffset(200, 50);
node.setPaint(Color.BLUE);
getCanvas().getLayer().addChild(node);
getCanvas().getLayer().addInputEventListener(
new PBasicInputEventHandler() {
@Override
public void mouseEntered(final PInputEvent event) {
event.getPickedNode().setPaint(Color.RED);
}
@Override
public void mouseExited(final PInputEvent event) {
event.getPickedNode().setPaint(Color.BLUE);
}
});
}
};
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}