java简单画图板程序 有个问题

我是个初学者,下面写的是一个画图板程序(只实现了点左侧的矩形按钮,然后在画布上上画的功能能)。可是画出来的矩形一直在画布的左侧,画布上什么也不显示,请告诉我问题出在哪,怎... 我是个初学者,下面写的是一个画图板程序(只实现了点左侧的矩形按钮,然后在画布上上画的功能能)。可是画出来的矩形一直在画布的左侧,画布上什么也不显示,请告诉我问题出在哪,怎么解决,谢谢。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class A extends JFrame implements ActionListener,MouseListener,MouseMotionListener{
JButton b1,b2;
JPanel p1,p2,p3;
Canvas c;
public A(){
getContentPane().setLayout(null);
b1=new JButton();
b1.setIcon(new ImageIcon("画图板/11.jpg"));
b1.setSize(50,50);
b1.setBounds(10,10,60,60);
b1.addActionListener(this);
b1.validate();
b2=new JButton();
b2.setIcon(new ImageIcon("画图板/2.jpg"));
b2.setSize(50,50);
b2.setBounds(0,0,50,50);
b2.addActionListener(this);
b2.validate();
p1=new JPanel();
p1.setBounds(0,0,200,400);
p1.setLayout(null);
p1.validate();
p2=new JPanel();
p2.setBounds(0,400,600,700);
p2.setLayout(null);
p2.validate();
p3=new JPanel();
p3.setLayout(null);
p3.setBounds(200,0,600,400);
p3.setVisible(true);
p3.validate();
c=new Canvas();
c.addMouseListener(this);
c.addMouseMotionListener(this);
c.setBounds(0,0,400,400);
c.setSize(400,400);
c.setBackground(Color.white);

p1.add(b1);
p2.add(b2);
p3.add(c);
add(p1);
add(p2);
add(p3);
setSize(600,700);
setVisible(true);
validate();
addWindowListener(new WindowAdapter() {
public void windowClosing( WindowEvent e ) {
System.exit( 0 );
}
} );

}
public static void main(String args[]){
new A();

}
static int x0,y0,x1,y1,flag;
public void actionPerformed(ActionEvent e){
if(e.getSource()==b1){
flag=1;
}
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){ }
public void mousePressed(MouseEvent e){
x0=e.getX();
y0=e.getY();
}
public void mouseReleased(MouseEvent e){
x1=e.getX();
y1=e.getY();

repaint();
}
public void mouseDragged(MouseEvent e){

}
public void mouseMoved(MouseEvent e){}
public void paint(Graphics g){
if(flag==1)
g.drawRect(x0, y0, x1-x0, y1-y0);
}

}
展开
 我来答
seekfor_
2008-05-09 · TA获得超过371个赞
知道小有建树答主
回答量:170
采纳率:66%
帮助的人:186万
展开全部
因为你最后写的paint方法是JFrame 的,而不是Canvas的。
应该自己写个继承Canvas的类,然后重构paint方法,
然后在鼠标事件里调用Canvas对象的paint方法。

ps:希望你写程序时给变量起个有意义的名字,不然看着太累了
wgaby
2008-05-07 · TA获得超过106个赞
知道答主
回答量:246
采纳率:0%
帮助的人:0
展开全部
p1.setLayout(null); ?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式