views:

322

answers:

0

Hi all! Anybody know how can I clone a JPanel to Paint the same thing in both, in the original panel and the clone panel, like if the objects were a mirror, but using CLONE, so I can REPAINT() one, and the other will do the same automatically.

My code only paints the original JPanel if I move the mouse in the original or in the clone panel,

but If I move the mouse in the clone panel, this jpanel doesn't paint.

Thanks in advance

CODE:

import java.awt.BorderLayout;

import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Point; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel;

public class ProcessorClone {

public static void main(String[] args) {

JFrame aWindow = new JFrame();
aWindow.setBounds(300, 200, 300, 100);
aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Container content = aWindow.getContentP
aWindow.setVisible(true);

CardViewer panel02=new CardViewer();
CardViewer panel01= (CardViewer) panel02.clone();

aWindow.setLayout(new BorderLayout());

aWindow.add(panel01,BorderLayout.NORTH);
aWindow.add(panel02,BorderLayout.SOUTH);

panel01.setBackground(Color.RED);
panel02.setBackground(Color.blue);

panel01.repaint();
panel02.repaint();

panel01.validate();
panel02.validate();

} }

class CardViewer extends JPanel implements MouseListener,MouseMotionListener, Cloneable {

/**
 * 
 */
private static final long serialVersionUID = 1L;
private JPanel mContentPaneBorder;
private JPanel mContentPane;
private JButton FileButton=new JButton("AAA");
private Point p;

public CardViewer(){
    super();
    this.add(FileButton);


addMouseListener(this);
addMouseMotionListener(this);

}
@Override
public void mouseClicked(MouseEvent arg0) {
    System.out.println("mouseClicked");

}

@Override
public void mouseEntered(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent arg0) {
    System.out.println("mousePressed");
    p = null;
    repaint();
}

@Override
public void mouseReleased(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void mouseDragged(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void mouseMoved(MouseEvent e) {
    System.out.println("mouseMoved");
     p = e.getPoint();
    this.repaint();
    this.validate();
}

public void paint(Graphics g) {
    System.out.println( g.getClass() );
        if (p != null) {
          Dimension d = getSize();
          int xc = d.width / 2;
          int yc = d.height / 2;
          g.drawLine(p.x, p.y, p.x, p.y);
          this.setBackground(Color.pink);
        }

}
  public Object clone () {

      // First make exact bitwise copy
      CardViewer copy = null;
    try {
        copy = (CardViewer)super.clone();
    } catch (CloneNotSupportedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


        return copy;
      } 

}