当前位置:编程学习 > JAVA >>

JPanel下利用鼠标事件绘图时产生的问题

我写了一段测试代码,对JPanel添加鼠标事件易做图,当点击鼠标时,在panel上某处绘制一字符串(或是一图形),结果运行时第一次点击鼠标后,字符串绘制后瞬间又消失了,之后再点击时则正常,希望诸位高手能给出答案。(注:绘图时避免重载paint()或paintComponent()之类的方法),代码如下:
package com.iron.model;

import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test extends JPanel implements MouseListener{

JFrame jf = new JFrame(); 
public Test(){
jf.add(this);
jf.setBounds(100, 100, 400, 400);
jf.setVisible(true);
this.addMouseListener(this);
}

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

@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}

@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
Graphics g = this.getGraphics();
g.drawString("hello", 100, 100);
}

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

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

@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}
--------------------编程问答-------------------- 你这种做法有很多隐患
你强行拿出 Graphics 对象,然后绘制,可能是能画出点什么
但是一个 JPanel 真正绘制的部分是由 paintComponent 控制的
你这样一旦界面调用到 paintComponent 就会把你绘制的东西抹去
二界面自动调用 paintComponent 的地方多的去了
比如大小变化,比如最大最小化……
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,