gpt4 book ai didi

java - 在 java.awt.Graphics 上绘制 java.awt.Cursor

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:34 30 4
gpt4 key购买 nike

是否有可能获得标准 AWT Cursor以位图图像的形式(例如 BufferedImage )或任何可在 Graphics2D 上绘制的图像?例如,文本光标 new Cursor(Cursor.TEXT_CURSOR) .

我相信这些光标会根据 native 平台而变化,我想将它们合并到一些 Swing 图标中。

最佳答案

即使您使用自己的图标,也可以显示您稍后将在给定上下文中使用的平台相关光标。将鼠标悬停在按钮和相邻面板上以查看效果。使用图标在组件上显示工具提示总是很不错。

image

import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;

/**
* @see http://stackoverflow.com/a/16363072/230513
*/
public class Test {

private static class CursorPanel extends JPanel {

private static final Icon ICON = UIManager.getIcon("html.pendingImage");
private Cursor cursor;

public CursorPanel(final Cursor cursor) {
this.cursor = cursor;
String name = cursor.getName();
JButton button = new JButton(name, ICON);
button.setCursor(cursor);
button.setToolTipText(name);
this.add(button);
final JPanel panel = new JPanel() {
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 125);
}
};
panel.setCursor(cursor);
panel.setBorder(new TitledBorder(name));
this.add(panel);
}
}

private void display() {
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new GridLayout(0, 1));
f.add(new CursorPanel(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)));
f.add(new CursorPanel(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Test().display();
}
});
}
}

关于java - 在 java.awt.Graphics 上绘制 java.awt.Cursor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16358932/

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