本篇文章简单讲一讲用java语言实现直线的绘制
需要用到的模块知识
用户界面设计
绘制图形工具
动作监听器
这里简单说明一下关于监听器的要点
监听器其实就是一个实现特定接口的java程序
这个java程序会用于监听另一个java对象的方法调用和属性改变等,当被监听的对象发生这两种事件后,监听器中的方法就会立即执行
监听器主要用于检测网站的在线人数,统计网站的访问量
总体步骤
设计界面
创建一个类,用于实现动作监听器,即ActionListener
再创建一个类,用于实现鼠标监听器,即MouseListener
设计界面
导入swing和awt的包这两个源码包
创建一个类,取名UI
创建一个方法,取名initUI,并将对于界面属性定义的代码卸载这个方法中
package com.zx2;
import javax.swing.*;
import java.awt.*;
public class UI {
//创建方法
public void initUI(){
JFrame jf=new JFrame("创意图形");//创建窗体对象
//设置窗体对象的具体属性,大小、布局
jf.setSize(800,800);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jf.setLayout(new FlowLayout());
//创建两个按钮,并给两个按钮,添加同一个动作监听器
JButton btn1=new JButton("Action1");
JButton btn2=new JButton("Action1");
jf.add(btn1);
jf.add(btn2);
Action1 ac1=new Action1();
btn1.addActionListener(ac1);
btn2.addActionListener(ac1);
jf.setVisible(true);
//创建绘制图形的对象
ShapeListener s1=new ShapeListener();
jf.addMouseListener(s1);
Graphics g=jf.getGraphics();
s1.gr=g;
这里需要特别说明一下Graphics,这是一个绘制图形的工具,必须要在可视化之后实现,即写在jf.setVisible(true);这条代码之后
调用这个方法
//常规动作,导入源码包
import javax.swing.*;
import java.awt.*;
public class UI {
//创建方法
public void initUI(){
JFrame jf=new JFrame("创意图形");//创建窗体对象
//设置窗体对象的具体属性,大小、布局
jf.setSize(800,800);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jf.setLayout(new FlowLayout());
//创建两个按钮,并给两个按钮,添加同一个动作监听器
JButton btn1=new JButton("Action1");
JButton btn2=new JButton("Action1");
jf.add(btn1);
jf.add(btn2);
Action1 ac1=new Action1();
btn1.addActionListener(ac1);
btn2.addActionListener(ac1);
jf.setVisible(true);
//创建绘制图形的对象
ShapeListener s1=new ShapeListener();
jf.addMouseListener(s1);
Graphics g=jf.getGraphics();
s1.gr=g;
}
public static void main(String[] args){
UI ui=new UI();
ui.initUI();
}
}
实现动作监听器
导入系统的源码包
创建一个类,并实现动作监听器
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Action1 implements ActionListener {
//用override实现伪代码的重写
@Override
public void actionPerformed(ActionEvent e){
System.out.println ("Action1 - clicked");
String actionStr = e.getActionCommand ();
System.out.println ("ActionStr:" + actionStr);
if(actionStr.equals ("Action1")){
}else if(actionStr.equals ("Action2")){
}
}
}
实现鼠标监听器
鼠标监听器要用的MouseEvent,即鼠标事件,这个源码包用于获取鼠标操作时的坐标和按键动作
导入系统源码包
创建一个类,取名ShapeListener,用implements实现MouseListener
定义三种坐标
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class ShapeListener implements MouseListener{
int x1,y1,x2,y2,x3,y3;
Graphics gr;
用Graphics方法实现显示图形(下面的代码读者可以先不必细究逻辑方法,因为这些代码相对固定)
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class ShapeListener implements MouseListener{
int x1,y1,x2,y2,x3,y3;
Graphics gr;
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("鼠标点击");
//获取并显示x3和y3的坐标
x3=e.getX();
y3=e.getY();
System.out.println("x3="+x3+"y3="+y3);
}
@Override
public void mousePressed(MouseEvent e) {
System.out.println("鼠标按下");
//获取并显示x2和y2的坐标
x1=e.getX();
y1=e.getY();
System.out.println("x1="+x1+"y1="+y1);
}
@Override
public void mouseReleased(MouseEvent e) {
System.out.println("鼠标释放");
//获取并显示x2和y2的坐标
x2=e.getX();
y2=e.getY();
System.out.println("x2="+x2+"y2="+y2);
gr.drawLine(x1,y1,x2,y2);//输入坐标的时候要对应好
}
@Override
public void mouseEntered(MouseEvent e) {
System.out.println("鼠标进入窗体");
}
@Override
public void mouseExited(MouseEvent e) {
System.out.println("鼠标离开窗体");
}
}
效果展示
![](https://i-blog.csdnimg.cn/blog_migrate/2a398189cd1c411f81afde5db2af93aa.png)