此代码为达内官方封装的jar包源码,本人仅为其添加注释,如需使用请下载jar包添加后引用即可下载地址
package cn.tedu.util;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* 此代码为达内官方封装的jar包源码,本人仅为其添加注释,如需使用请下载jar包添加后引用即可
*/
public class App extends JFrame {
private static final long serialVersionUID = -4664152594554232786L;
/**
* panel刷新的时间间隔
*/
private int interval = 1000/100;
/**
* 窗体中要显示的内容的控件
*/
private Panel panel;
public App() {
//创建继承自JPanel类的对象,重写了其paint方法,在执行父类paint方法的同时,调用本类中的painting方法
panel = new Panel();
//将pannel追加到窗体中
add(panel);
//设置窗体的大小
setSize(800,620);
//设置点击窗体右上角的关闭按钮时执行退出操作
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/**
* 添加键盘事件
* @param l
*/
public void addKeyListener(KeyListener l) {
panel.addKeyListener(l);
panel.setFocusable(true);
panel.setRequestFocusEnabled(true);
}
/**
* 添加鼠标事件
* @param l
*/
public void addMouseLintener(MouseAdapter l) {
panel.addMouseListener(l);
panel.addMouseMotionListener(l);
panel.addMouseWheelListener(l);
}
/**
* 构造函数,可以指定标题
* @param title
*/
public App(String title) {
this();
setTitle(title);
}
/**
* 设置窗体的外边界大小
* @param width
* @param height
*/
public void setSize(int width, int height) {
super.setSize(width, height);
setLocationRelativeTo(null);
}
/**
* 设置窗体界面刷新的时间间隔
* @param interval
*/
public void setInterval(int interval) {
this.interval = interval;
}
/**
* 设置定刷新窗体且执行running方法,并显示出窗体来
*/
public void start() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
running();
panel.repaint();
}
}, interval, interval);
setVisible(true);
}
/**
* 重写此方法会自动执行
*/
public void running() {
}
/**
* 重写此方法,绘制自定义组件
*/
public void painting(Graphics2D g) {
}
private class Panel extends JPanel{
private static final long serialVersionUID = 8365407815677076591L;
@Override
public void paint(Graphics g) {
super.paint(g);
painting((Graphics2D)g);
}
}
}
其他类想要使用时
public class TestApp {
public static void main(String[] args) {
App app = new App() {
@Override
public void running() {
super.running();
//在这里写与界面刷新同时执行的逻辑
}
@Override
public void painting(Graphics2D g) {
super.painting(g);
//在这里使用g对所有的元素进行重画到界面上
g.drawString("达内科技", 10, 10);
}
};
//app.addKeyListener();//添加键盘事件使用这个方法传入
//app.addMouseLintener();//添加鼠标事件使用这个方法传入
app.start();
}
}