我有以下java程序:
import java.awt.*;
import java.awt.Graphics;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class Lapex extends JPanel implements MouseListener{
JPanel p = new JPanel();
Lapex(){
JFrame f = new JFrame();
p.addMouseListener(this);
p.setPreferredSize(new Dimension(600, 600));
f.add(p);
f.pack();
f.show(true);
}
public void paint(Graphics g){
paintComponents(g);
g.setColor(Color.RED);
g.drawLine(10, 10, 100, 100);
}
public void mouseClicked(MouseEvent me){
System.out.println("AAAA");
repaint();
}
}
public static void main(String[] args){
new Lapex();
}
}
点击鼠标,在控制台显示为“aaaaaaa”,但没有画线。(我删除了另一个鼠标事件)如何修改?
3条答案
按热度按时间xmakbtuz1#
必须调用super方法并使用paintcomponent。
3gtaxfhh2#
需要注意的几点:
你的班级扩大了
JPanel
,但是你又创造了另一个JPanel
在实际添加到框架的类中。改为添加类的示例。替代paintcomponent而不是paint。
使用调用invokelater在edt上启动程序。有关详细信息,请参阅事件调度线程。
重写getpreferredsize而不是调用setpreferredsize。
以下是单击鼠标按钮时打开/关闭行的完整示例:
hgqdbh6s3#
不!,不重写
paint()
让它自己摆动。你要做的就是重写paintComponent()
.