本文共 4909 字,大约阅读时间需要 16 分钟。
import java.awt.*;import javax.swing.*;public class MyPanel extends JPanel{ RectClass rectClass = null; public MyPanel(){ rectClass = RectClass.returnRectClass(); } public void paint(Graphics g){ super.paint(g); this.drawRect(rectClass.getX(), rectClass.getY(), rectClass.getWidth(), rectClass.getHeight(), g); } public void drawRect(int x1, int y1, int x2, int y2,Graphics g){ g.fillRect(x1, y1, x2, y2); this.repaint(); } //创建MyPanel对象,return函数方便其他函数调用。 private static MyPanel mypanel = new MyPanel(); public static MyPanel returnMyPanel(){ return mypanel; } }import java.awt.Cursor;import java.awt.event.*;public class MouseListenerClass implements MouseListener{ MyPanel mypanel = null; RectClass rectClass = null; private int mousePressX = 0; private int mousePressY = 0; public MouseListenerClass(){ mypanel = MyPanel.returnMyPanel(); rectClass = RectClass.returnRectClass(); } @Override public void mouseClicked(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("鼠标按下:x = "+arg0.getX() + " y = "+arg0.getY()); } @Override public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("鼠标进入"); mypanel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR )); } @Override public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("鼠标出来"); } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("鼠标按下"); mousePressX = arg0.getX(); mousePressY = arg0.getY(); rectClass.setX(mousePressX); rectClass.setY(mousePressY); } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("鼠标松开"); rectClass.setWidth(arg0.getX()-mousePressX); rectClass.setHeight(arg0.getY()-mousePressY); } }import java.awt.event.KeyEvent;import java.awt.event.KeyListener;public class KeyListenerClass implements KeyListener{ @Override public void keyPressed(KeyEvent arg0) { // TODO Auto-generated method stub System.out.println("按键按下"); System.out.println("按下的是:"+arg0.getKeyChar()); } @Override public void keyReleased(KeyEvent arg0) { // TODO Auto-generated method stub System.out.println("按键松开"); } @Override public void keyTyped(KeyEvent arg0) { // TODO Auto-generated method stub System.out.println(""); }}import java.awt.event.*;public class WindowsListenerClass implements WindowListener{ @Override public void windowActivated(WindowEvent e) { // TODO Auto-generated method stub System.out.println("调用WindowActivate方法"); } @Override public void windowClosed(WindowEvent e) { // TODO Auto-generated method stub System.out.println("调用windowClosed方法"); } @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub System.out.println("调用windowClosing方法"); } @Override public void windowDeactivated(WindowEvent e) { // TODO Auto-generated method stub System.out.println("调用windowDeactivated方法"); } @Override public void windowDeiconified(WindowEvent e) { // TODO Auto-generated method stub System.out.println("调用windowDeiconified方法"); } @Override public void windowIconified(WindowEvent e) { // TODO Auto-generated method stub System.out.println("调用windowIconified方法"); } @Override public void windowOpened(WindowEvent e) { // TODO Auto-generated method stub System.out.println("调用windowOpened方法"); } }public class RectClass { private int x = 0; private int y = 0; private int width = 0; private int height = 0; private static RectClass rectClass = new RectClass(); public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public int getWidth() { return width; } public void setWidth(int width) { this.width = width; } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } public static RectClass returnRectClass(){ return rectClass; } }import javax.swing.*;public class MyTest01 extends JFrame{ MyPanel mypanel = null; MouseListenerClass mouseListenerClass = null; KeyListenerClass keyListenerClass = null; WindowsListenerClass windowsListenerClass = null; public static void main(String[] args){ MyTest01 mytest01 = new MyTest01(); } public MyTest01(){ mypanel = MyPanel.returnMyPanel(); keyListenerClass = new KeyListenerClass(); mouseListenerClass = new MouseListenerClass(); windowsListenerClass = new WindowsListenerClass(); this.add(mypanel); this.addKeyListener(keyListenerClass); this.addMouseListener(mouseListenerClass); this.addWindowListener(windowsListenerClass); this.setSize(400,300); this.setLocation(400,400); this.setVisible(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); }}
在学习的过程中,自己首先实现了在面板上添加各个监听事件,对各个事件的用法有了一个大概的了解。然后让鼠标进入面板区域后变为小手,接着通过利用keyListener事件实现拖拽绘画矩形,就是虽然画出来了,但是不对准确的在指定位置绘画。在学习过程中,自己明白了如何在不同类中调用同一个对象,对静态方法返回类的对象和静态类变量有了一个更深刻的了解,我觉得这是我收获最大的。
转载地址:http://vsrdb.baihongyu.com/