JFrames复制图像

时间:2013-11-15 05:10:01

标签: java swing jframe duplicates

所以我有一个迷你程序,它将显示2个JFrame,一个带有形状的脸,另一个带有一些编辑选项。每当我运行程序时,它都会显示两个框架,但由于某种原因,它会显示面框上工具栏框架中的按钮。它们不是活动按钮,它只是它们的基本形象。这是一个截图: enter image description here http://i1318.photobucket.com/albums/t659/brianbolnick1/scrnshot_zps524c99ee.png

我试图让我的主要尽可能简单:

    //draw face panel
    Face face = new Face();
    JFrame frame = new JFrame();
    frame.add(face);
    frame.setSize(600,400);
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true); 

    //draw toolbar panel
    JFrame frame1 = new FaceClass ();
    frame1.setTitle("Toolbar");
    frame1.setSize(200,150);
    frame1.setLocation(200,100);
    frame1.setDefaultCloseOperation(frame1.EXIT_ON_CLOSE);
    frame1.setVisible(true);  

从我所看到的,我认为没有任何问题。谁能看到任何可能出错的东西?或者问题是否可能在其他地方(“Face”类的构造函数或paintComponent)?请帮忙!我一直在努力解决这个问题,似乎无法解决这个问题......如果你需要查看更多的代码,我不想发布代码。

这是面部课程的主要内容:

public Face () {
    //register mouse click activity
    addMouseMotionListener(new MouseMotionAdapter() {
        @Override public void mouseDragged (MouseEvent event) {
            selectShapeUnder(event.getX(), event.getY());
            repaint();
        }
    });
    addMouseListener(new MouseAdapter() {
        @Override public void mousePressed (MouseEvent event) {
            selectShapeUnder(event.getX(), event.getY());
            repaint();
        }
    });

}

 protected void paintComponent (Graphics g) {
        Graphics2D graphics = (Graphics2D)g;

        graphics.setColor((selected == face) ? Color.CYAN : Color.GREEN);
        graphics.fill(face);

        graphics.setColor((selected == mouth) ? Color.YELLOW : Color.RED);
        graphics.fill(mouth);

        graphics.setColor((selected == eyeLeft || selected == eyeRight) ? Color.RED     
: Color.WHITE);
        graphics.fill(eyeLeft);
        graphics.fill(eyeRight);

        graphics.setColor(Color.BLACK);
        graphics.fill(pupilLeft);
        graphics.fill(pupilRight);
        g.drawLine(220, 185, 270, 185);
        g.drawLine(220, 185, 260, 130);

        repaint();

    }//end pC


public void selectShapeUnder (int x, int y) {
        Shape oldSelected = selected;

        if (eyeLeft.contains(x, y)){
            selected = eyeLeft; 
        }//end if 
        else if (eyeRight.contains(x, y)){
            selected = eyeRight;    
        }//end else if
        else if (mouth.contains(x, y)){
            selected = mouth; 
        }//end else if
        else if (face.contains(x, y)) {
            selected = face;
        }//end else if
        else
            selected = null;
        if (selected != oldSelected)
            repaint();
    }//end selectShapeUnder

0 个答案:

没有答案