请教一个java中点击鼠标绘制图形的问题
我写了个程序点击鼠标和拖动鼠标时会绘制图形,但是在点击鼠标绘图时出现了一个奇怪的现象,解释不能,也不知道怎么解决,具体附上图片具体代码如下:importjava.awt....
我写了个程序点击鼠标和拖动鼠标时会绘制图形,但是在点击鼠标绘图时出现了一个奇怪的现象,解释不能,也不知道怎么解决,具体附上图片
具体代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Myjava
{
public static void main(String args[])
{
new FrameM();
}
}
class FrameM extends JFrame
{
public FrameM()
{
JButton jb = new JButton("测试");
Container c = getContentPane();
c.add(new PanelM(),BorderLayout.CENTER);
c.add(jb,BorderLayout.SOUTH);
setTitle("aaa");
setSize(500,400);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
class PanelM extends JPanel
{
ImageIcon icon = new ImageIcon("app.gif");
JLabel jl = new JLabel(icon,SwingConstants.CENTER);
int x,y;
boolean boo = false;
public PanelM()
{
add(jl);
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent m)
{
x = m.getX();
y = m.getY();
repaint();
boo = true;
}
});
}
public void paintComponent(Graphics g)
{
if(boo)
g.fillOval(x, y, 20, 20);
}
} 展开
具体代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Myjava
{
public static void main(String args[])
{
new FrameM();
}
}
class FrameM extends JFrame
{
public FrameM()
{
JButton jb = new JButton("测试");
Container c = getContentPane();
c.add(new PanelM(),BorderLayout.CENTER);
c.add(jb,BorderLayout.SOUTH);
setTitle("aaa");
setSize(500,400);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
class PanelM extends JPanel
{
ImageIcon icon = new ImageIcon("app.gif");
JLabel jl = new JLabel(icon,SwingConstants.CENTER);
int x,y;
boolean boo = false;
public PanelM()
{
add(jl);
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent m)
{
x = m.getX();
y = m.getY();
repaint();
boo = true;
}
});
}
public void paintComponent(Graphics g)
{
if(boo)
g.fillOval(x, y, 20, 20);
}
} 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏10(财富值+成长值)
2个回答
展开全部
人家都是在此点与上点之间绘直线。否则就是这样。此法记得是在《windows程序设计》一书里讲的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public void paintComponent(Graphics g)
{
super.paintComponent(g);//加上这句
if(boo)
g.fillOval(x, y, 20, 20);
}
{
super.paintComponent(g);//加上这句
if(boo)
g.fillOval(x, y, 20, 20);
}
追问
加上super是不会出现画面重叠了,但是点击第二个圆时前一个圆就消失了,我想让点击绘制的每个图形都一直存在,请问一下该怎么弄呢?
追答
这个问题不就回到你最初的问题了?你最初就是因为圆或图像不会消失 才出现的重叠,现在又需要他不消失?那不就又重叠了。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询