mousetest3.java

来自「simple mouse pressed, clicked, dragged t」· Java 代码 · 共 101 行

JAVA
101
字号
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.awt.geom.*;
import javax.swing.*;

public class MouseTest3 extends JApplet {
	
	public void init() {
		PanelLukis panel = new PanelLukis();
		getContentPane().add(panel);
	}
}


class PanelLukis extends JPanel {
	private boolean mula;
	private int xMula, yMula;
	private int xSemasa, ySemasa;

  	public PanelLukis() {
		setBackground(Color.white);
		addMouseListener(new MouseHandler2());
		addMouseMotionListener(new MouseMotionHandler2());
	}

	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		Graphics2D g2 = (Graphics2D) g;

		if (mula == false) {
			g2.setPaint(Color.red);
			g2.drawString("Klik & drag untuk melukis segiempat", 10, 20);
		}
		
		lukisSegi4(g2);
	}

	private void lukisSegi4(Graphics2D g2) {
		Rectangle2D segi4 = new Rectangle2D.Double(0, 0, 0, 0);

		if (xMula != xSemasa && xMula != ySemasa) {
			int x, y;
			int w, h;
			 
			if (xSemasa > xMula) {
				x = xMula;
				w = xSemasa - xMula;
			}
			else {
				x = xSemasa;
				w = xMula - xSemasa;
			}

			if (ySemasa > yMula) {
				y = yMula;
				h = ySemasa - yMula;
			}
			else {
				y = ySemasa;
				h = yMula - ySemasa;
			}

			segi4.setFrame(x, y, w, h);
			g2.setPaint(Color.blue);
			g2.fill(segi4);
			g2.setPaint(Color.black);
			g2.draw(segi4);
		}
	}


	private class MouseHandler2 extends MouseAdapter {

		public void mousePressed(MouseEvent e) {
			if (mula == false) {
				mula = true;
			}
	
			xMula = xSemasa = e.getX();
			yMula = ySemasa = e.getY();
			repaint();
		}

		public void mouseReleased(MouseEvent e) {
			repaint();
		}
	}

	private class MouseMotionHandler2 implements MouseMotionListener {
		public void mouseDragged(MouseEvent e) {
			xSemasa = e.getX();
			ySemasa = e.getY();
			repaint();
		}

		public void mouseMoved(MouseEvent e) {
		}
	}
}	

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?