鼠标画线条小程序
来源:互联网 发布:php视频教程全集 编辑:程序博客网 时间:2024/05/24 15:40
import java.awt.*;import java.awt.event.*;import javax.swing.*;public class DrawLine {public static void main(String[] args) {DrawLineFrame frame = new DrawLineFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}class DrawLineFrame extends JFrame {public DrawLineFrame() {setTitle("DrawLineTest");setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);DrawLinePanel panel = new DrawLinePanel();Container contentPane = getContentPane();contentPane.add(panel);}public static final int DEFAULT_WIDTH = 250;public static final int DEFAULT_HEIGHT = 250;}class DrawLinePanel extends JPanel implements MouseListener {int x1, x2;int y1, y2;DrawLinePanel() {addMouseListener(this);}public void mouseClicked(MouseEvent event) {}public void mousePressed(MouseEvent event) {x1 = event.getX();y1 = event.getY();}public void mouseReleased(MouseEvent event) {x2 = event.getX();y2 = event.getY();repaint();// Graphics g=getGraphics();// g.setColor(Color.RED);// g.drawLine(x1,y1,x2,y2);}public void mouseEntered(MouseEvent event) {}public void mouseExited(MouseEvent event) {}public void paintComponent(Graphics g) {// super.paintComponent(g);// super.paintComponent(g)是否注释掉会产生不同的结果// 是父类JPanel里的方法,会把整个面板用背景色重画一遍,起到清屏的作用(恢复原状)g.setColor(Color.RED);g.drawLine(x1, y1, x2, y2);}}
好像把第18、19行注释掉
然后再加上add(panel);
也能得到相同的结果啊!
求知道的人解释下!
与AWT组件不同,Swing组件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关联的内容面板(content pane)上。
内容面板是顶层容器包含的一个普通容器,它是一个轻量级组件。
基本规则如下:
1、把Swing组件放入一个顶层Swing容器的内容面板上
2、避免使用非Swing的重量级组件。
super.paintComponent()这一句是调用了父类的方法,每次重绘(repaint())的时候,程序就会调用到自身的paintComponent()方法(它覆盖了父类的同名方法),这个程序在paintComponent方法中第一行就先调用了super.paintComponent进行界面重绘,那么就由父类先进行界面重绘(一般是恢复原状),父类重绘完之后,界面就恢复到某个界面,这时候才调用drawLine画出一条线。
在JDK中查到paintComponent()有"如果不调用超类的实现,则必须遵守不透明属性,也就是说,如果此组件是不透明的,则必须以透明的颜色完全填充背景。如果不遵守不透明属性,则很可能看到可视的人为内容。"
如果注释掉super.paintComponent()的话,那么这个类本身已经覆盖掉它的父类的paintComponent方法,
所以不会执行到它,界面需要重绘的时候,只是执行了drawLine方法(进行重绘)。
- 鼠标画线条小程序
- 鼠标画线程序
- 画线程序
- MFC鼠标响应、鼠标画线
- flex 实现鼠标画线
- java---鼠标画线
- winform鼠标画线
- 随鼠标移动画线
- 点击鼠标两点画线
- MFC 鼠标实时画线
- MFC 鼠标画线总结
- 【Unity】unity 鼠标画线
- Matlab GUI鼠标画线
- 鼠标画线汇集代码
- C#学习一:编一个可以画线的小程序
- 键盘鼠标锁定小程序
- Qt画线条
- Word画线条
- iOS Dev Center Can't Update Agreement
- 在JS中用JSP中的变量
- Zend Framework 中的类概览
- Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)
- 关于齐次坐标
- 鼠标画线条小程序
- 设计模式--Abstract Factory
- NoClassDefDoundErr与ClassNotFoundException区别
- Android DSP 隨手札 (zt)
- 详细介绍SQL交叉表的实例
- Object-C 协议 Protocol
- 工作日志2011-10-25
- 《机器人学基础》整理(3)
- VC显示网页验证码、模拟CSDN网页登录