подвижное стекло между рамами - PullRequest
0 голосов
/ 04 апреля 2011

Я перетаскиваю компонент из одного кадра на главном мониторе в другой кадр на дополнительном мониторе, и пока я перетаскиваю компонент, окрашенный в стеклянную панель, я вижу стеклянную панель поверх основного движителя, но после того, как мышь достигает вторичный монитор, стекло исчезает? Может ли кто-нибудь помочь мне в этом? Как я могу закрасить стекло над вторичным монитором?

Вот некоторые части моего кода:

public class Main_Frame extends JFrame

{

     public Main_Frame (){
        //adding  the content of main JFrame
        setGlassPane(new  ImageGlassPane());
        //detect other screens and making object of Second_Frame for each
     }
}

public class Second_Frame extends JDialog{
    public Second_Frame(){
       super(new Frame(MultiMonitor.getInstance().getNextDevice().getDefaultConfiguration()), 
          Title, false);
       setGlassPane(new  ImageGlassPane());
    }

}

    public class ImageGlassPane() extends JPanel{
public ImageGlassPane() {
           setOpaque(false);

     }

     protected void paintComponent(Graphics g) {
        if ( !isVisible()) {
            return;
        }
        Graphics2D g2 = (Graphics2D) g.create();
        g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                            RenderingHints.VALUE_ANTIALIAS_ON);

        int x = (int) (location.getX() - (width * zoom / 2));
        int y = (int) (location.getY() - (height * zoom / 2));

        if (visibleRect != null) {
            g2.setClip(visibleRect);
        }

        if (visibleRect != null) {
            Area clip = new Area(visibleRect);
            g2.setClip(clip);
        }

        g2.drawImage(image, x, y, (int) (width * zoom), (int) (height * zoom), null);
    }

}

1 Ответ

2 голосов
/ 04 апреля 2011

Как бы вы ни рисовали компонент на стеклянной панели в первом кадре, вам нужно будет сделать это и для второго кадра.Похоже, это проблема не двух мониторов, а проблема двух кадров.

...