2016-04-15 1 views
1

Я рисую тень на unecorated Jframe с GradientPaint класс В ОС Windows все в порядке. Но на Mac OS, когда я выбираю java 7/8 тень больше, чем в java 6. Что я делаю неправильно?Почему GradientPaint рисует по-разному в Java 6 и Java 7/8 на MAC OS

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 
    ..... 
    } 
} 

ответ

0

Скорее всего, вы не делаете что-то неправильно. Это могут быть общие отличия от Mac/Win, а также отличия от версии Java.

До Java 6 Apple разрабатывала Java, но с Java 7 код затем был перенесен в oracle, который теперь поддерживает его. Этот переход также включал множество изменений в поведение источника и som GUI, и из-за этого различия, которые вы видите в Java 6 и Java 7/8.

Возможно, я бы сделал инструкцию if и проверил os, чтобы обрабатывать различия между Win и Java 7/8 на Mac OSX, и забыть о том, как это выглядит в старой Java 6 на Mac.

Смежные вопросы