gpt4 book ai didi

java - 为什么 GradientPaint 在 MAC OS 上的 Java 6 和 Java 7/8 中绘制不同

转载 作者:太空宇宙 更新时间:2023-11-04 12:42:53 25 4
gpt4 key购买 nike

我使用 GradientPaint 类在未修饰的 Jframe 上绘制阴影在 Windows 操作系统上一切正常。但是在 Mac OS 上,当我选择 java 7/8 时,阴影比 java 6 中的阴影更大。我做错了什么?

public class DropShadowPanel extends JPanel() {

//class fields and constructor
.....

@Override
protected void paintComponent(Graphics gr) {
super.paintComponent(gr);
Graphics2D g = (Graphics2D) gr;

Rectangle2D r = new Rectangle2D.Double(shadowDistance,shadowDistance, 300, 300);

draw(g, r, shadowSize);
}

private void draw(Graphics2D g, Rectangle2D r, double shadowSize) {
Color c0 = shadowColor;
//c1 - full opacity color
Color c1 = new Color(255, 255, 255, 0);

double x0 = r.getMinX();
double y0 = r.getMinY();
double x1 = r.getMaxX();
double y1 = r.getMaxY();
double w = r.getWidth();
double h = r.getHeight();

// Left
g.setPaint(new GradientPaint(
new Point2D.Double(x0, y0), c0,
new Point2D.Double(x0 - s, y0), c1));
g.fill(new Rectangle2D.Double(x0 - s, y0, s, h));

//draw the remaining sides
.....
}
}

最佳答案

很可能不是你做错了什么。它可能是与 Mac/Win 的一般差异,也可能是与 Java 版本的差异。

在 Java 6 之前,Apple 一直在开发 Java,但从 Java 7 开始,代码被转移到了 Oracle,现在由 Oracle 负责维护。此转换还包括源代码和某些 GUI 行为的许多更改,您在 Java 6 与 Java 7/8 中看到的差异就是由于这些变化。

我可能会做一个 if 语句并检查操作系统来处理 Mac OSX 上的 Win 和 Java 7/8 之间的差异,而忘记它在 Mac 上的旧 Java 6 中的样子。

关于java - 为什么 GradientPaint 在 MAC OS 上的 Java 6 和 Java 7/8 中绘制不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36654712/

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