监听器:
- 鼠标监听器
- 鼠标事件参数
- 动作监听器
- 动作事件参数
数字计算方法:
1.取绝对值(保证图形的长宽为正值)
public int abs(int a){
if(a<0){
return -a;
}else{
return a;
}
}
2.取最值(确保在图形起点与终点一致的情况下,画出来的图形形状也一致)
public int max(int a,int b,int c){
if(a<b){
if(b>c){
return b;
}else{
return c;
}
}else{
if(a>c){
return a;
}else{
return c;
}
}
}
package tky1028;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class DrawListener implements MouseListener, ActionListener {
Graphics g;
int x1,y1,x2,y2;
String type="";
@Override
public void actionPerformed(ActionEvent e) {
String ac=e.getActionCommand();
System.out.println(ac);
type=ac;
}
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("点击");
int x= e.getX();
int y=e.getY();
System.out.println("x="+x+" y="+y);
}
@Override
public void mousePressed(MouseEvent e) {
System.out.println("按下");
int x= e.getX();
int y=e.getY();
System.out.println("x="+x+" y="+y);
x1=x;
y1=y;
}
@Override
public void mouseReleased(MouseEvent e) {
System.out.println("松开");
int x= e.getX();
int y=e.getY();
System.out.println("x="+x+" y="+y);
x2=x;
y2=y;
if(type.equals("直线")){
g.drawLine(x1,y1,x2,y2);
}
if(type.equals("矩形")){
g.drawRect(min(x1,x2),min(y1,y2),abs(x2-x1),abs(y2-y1));
}
if(type.equals("圆形")){
g.drawOval(min(x1,x2),min(y1,y2),abs(x2-x1),abs(y2-y1));
}
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
//数学计算方法
public int abs(int a){
if(a<0){
return -a;
}else{
return a;
}
}
public int min(int a,int b){
if(a<b){
return a;
}else{
return b;
}
}
public int max(int a,int b,int c){
if(a<b){
if(b>c){
return b;
}else{
return c;
}
}else{
if(a>c){
return a;
}else{
return c;
}
}
}
}
package tky1028;
import javax.swing.*;
import java.awt.*;
public class Drawpad {
public void showUI(){
JFrame jf=new JFrame();
jf.setTitle("画图板");
jf.setSize(700,800);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FlowLayout fl=new FlowLayout();
jf.setLayout(fl);
JButton jButton=new JButton("直线");
jf.add(jButton);
JButton jButton1=new JButton("矩形");
jf.add(jButton1);
JButton jButton2=new JButton("圆形");
jf.add(jButton2);
jf.setVisible(true);
DrawListener drawListener=new DrawListener();
jf.addMouseListener(drawListener);
jButton.addActionListener(drawListener);
jButton1.addActionListener(drawListener);
jButton2.addActionListener(drawListener);
Graphics g=jf.getGraphics();
drawListener.g=g;
}
public static void main(String[] args) {
Drawpad drawpad=new Drawpad();
drawpad.showUI();
}
}