如何在JavaFX 2.1中更改光标图像大小?

时间:2012-04-03 13:01:25

标签: javafx-2

我改变了光标的图像。我试图改变光标图像的大小,但我无法。我怎样才能改变它的大小?提前谢谢。

3 个答案:

答案 0 :(得分:5)

您可以使用其中一种预定义的光标类型更改光标或提供图像以拥有自己的光标,但系统将根据底层平台的光标大小支持自动调整提供的图像大小。有关用于确定所用实际游标大小的算法的详细信息,请参阅ImageCursor.getBestSize()ImageCursor.chooseBestCursor()的文档。

import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.stage.*;

public class ResizableCursor extends Application {
  public static void main(String[] args) { launch(args); }
  @Override public void start(Stage stage) {
    StackPane layout = new StackPane();
    layout.setCursor(Cursor.cursor("http://icons.iconarchive.com/icons/artua/star-wars/256/Death-Star-icon.png"));
    stage.setScene(new Scene(layout, 200, 200));
    stage.show();
  }
}

如果你想拥有一个任意大小的节点,它随着鼠标移动并且看起来像光标(但不是光标),你可以将光标设置为Cursor.NONE,然后翻译一个节点来跟随鼠标位置(当您单击圆圈移动它时,在this example中完成)。使用这种策略,似乎用户有一个任意大小的自定义光标,即使它们没有。

ImageCursor.getBestSize()的相关文档的副本:

  

获取最接近指定的支持的游标大小   首选尺寸。如果平台没有,则返回值(0,0)   支持自定义游标。

     

注意:如果使用的图像尺寸与支持的尺寸不匹配   size(由此方法返回),实现将调整大小   图像到支持的大小。这可能会导致质量下降。

     

注意:这些值可能因操作系统和图形卡而异   和屏幕分辨率,但在撰写本文时,一个样本   对于所有请求的大小,Windows Vista计算机返回32x32   示例Mac和Linux机器将请求的大小返回到a   最大64x64。应用程序应提供32x32游标   将在所有平台上运行良好,并可能选择提供   64x64游标,用于支持它的平台。

答案 1 :(得分:0)

VBox vBoxMainLayout = new VBox();
Scene scene = new Scene(vBoxMainLayout);

Image img = newImage(getClass().getResourceAsStream("image.png"));
ImageCursor cursor = new ImageCursor(img, 30, 30);
scene.setCursor(cursor);

答案 2 :(得分:-1)

import java.awt.Toolkit;
import javafx.scene.Cursor;
import javafx.scene.image.Image;

public class ColorChooser extends Cursor
{

    public override function impl_getAWTCursor(): java.awt.Cursor {

        def url = "{__DIR__}eyedropper.png";

        var toolkit = Toolkit.getDefaultToolkit();

        var image = Image{width:32 height:32 url:url}.bufferedImage;
        var hotspot = new java.awt.Point(0,15);
        var cursor = toolkit.createCustomCursor(image, hotspot "colorpicker");

        return cursor;
    }
}