该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Demo7 extends JFrame
{
private JTextField text;
private JPanel jp1;
private int w=20,l=20;
private boolean canmove=false;
public Demo7()
{
this.setBounds(300,300,500,500);
this.setBackground(java.awt.Color.lightGray);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.getContentPane().setLayout(newGridLayout(1,2));
jp1=new JPanel();
this.getContentPane().add(jp1);
this.getContentPane().add(new myPanel());
jp1.add(new JLabel("鼠标操作"));
text=new JTextField(20);
jp1.add(text);
text.setEditable(false);
this.setVisible(true);
}
class myPanel extends JPanel implements MouseListener,MouseMotionListener//定义右边的panel
{
private int x,y,lx,ly;
public myPanel()
{
this.addMouseMotionListener(this);//监听这个panel
this.addMouseListener(this);
}
public void mousePressed(MouseEvent e)
{
text.setText("mousePressed");
}
public void mouseReleased(MouseEvent e)
{
canmove=false;
}
public void mouseClicked(MouseEvent e)
{
text.setText("mouseClicked");
}
public void mouseEntered(MouseEvent e)
{
text.setText("mouseEntered");
}
public void mouseExited(MouseEvent e)
{
text.setText("mouseExited");
}
public void mouseMoved(MouseEvent e)
{
}
public void mouseDragged(MouseEvent e)
{
lx=x;
ly=y;
text.setText("mouseDragged");
//if(e.getX()>=x&&e.getX()<=x+w&&e.getY()>=y&&e.getY()<=y+l)//鼠标坐标在图形之内
//{
if(e.getX()>=x&&e.getX()<=x+w&&e.getY()>=y&&e.getY()<=y+l)//鼠标坐标在图形之内
{
canmove=true;
}
if(canmove)
{
x=e.getX();
y=e.getY();
this.repaint();
}//}
}
public void paint(Graphics g)
{
g.setColor(this.getBackground());
g.drawRect(lx,ly,w,l);//背景颜色擦除
g.setColor(Color.blue);
g.drawRect(x,y,w,l);
}
}
public static void main(String[] args)
{
new Demo7();
}
}
为什么repaint()总把左边的panel的东西画出来
怎么改