框架之间移动玻璃窗格

时间:2011-04-04 06:50:41

标签: java swing drag-and-drop glasspane

我将组件从主显示器中的一个框架拖动到辅助显示器中的另一个框架,当我拖动玻璃窗格中的组件时,我可以看到主要模型上的玻璃板,但是在鼠标到达之后二次监视器,玻璃板消失了吗?任何人都可以帮助我吗?如何在二级显示器上绘制玻璃板?

以下是我的一些代码:

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 个答案:

答案 0 :(得分:2)

但是,您在第一帧的玻璃窗格中绘制组件,您也需要对第二帧进行绘制。这听起来好像不是两个显示器问题,而是一个两帧问题。