人形大宝宝看到不要生气哈,毕竟你看剧啦,哈哈哈哈
神途
这是一款类似于传奇的游戏,其中有很多的奖励丰富的BOSS,而且刷新很有规律,规律如下
- 从死亡开始计时
- 默认一般为半小时
- 半小时后在死亡地点附近进行复活刷新。
计时器
利用这里特点,我们就可以自己做一个计时器,来记录BOSS的相关信息。
因为这个本来不想发的,但是想到以后应该还会再写类似的冬冬,所以我把这个发上来,记录一下。
数据库建表
我们需要有以下信息进行保存。
以下是建表的SQL语句
/*
SQLyog Ultimate v12.09 (64 bit)
MySQL - 5.5.22 : Database - game
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`game` /*!40100 DEFAULT CHARACTER SET gbk */;
USE `game`;
/*Table structure for table `shentu` */
DROP TABLE IF EXISTS `shentu`;
CREATE TABLE `shentu` (
`name` varchar(100) NOT NULL COMMENT '怪兽名字',
`map` varchar(100) DEFAULT NULL COMMENT '地图名字',
`time` varchar(100) DEFAULT NULL COMMENT '死亡时间',
`x` varchar(20) DEFAULT NULL COMMENT 'x坐标',
`y` varchar(20) DEFAULT NULL COMMENT 'y坐标',
`time2` varchar(100) DEFAULT NULL COMMENT '下一次刷新时间',
`time3` varchar(20) DEFAULT NULL COMMENT '刷新间隔',
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
/*Data for the table `shentu` */
insert into `shentu`(`name`,`map`,`time`,`x`,`y`,`time2`,`time3`) values ('福利怪_01','贵族寝宫','1:37:35','95','151','2:7:35','30'),('福利怪_02','贵族寝宫','1:40:37','141','106','2:10:38','30'),('福利怪_03','英雄本色-专属','1:43:17','28','56','2:13:17','30'),('煞·破军_01','贵宾寝宫','1:4:11','94','118',NULL,NULL),('玄·圣君_01','贵族寝宫','1:34:22','89','67',NULL,NULL);
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
Java数据库操作
这个是以前写好的一个操作类,直接拿过来。
数据库链接信息.properties
drivers = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/game?characterEncoding=UTF-8
user = ****
passwd = ******
DBMap.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package db;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Set;
/**
*
* @author lol
*/
public class DBMap extends HashMap<String, LinkedList<Object> > {
public DBMap() {
super();
}
public static int getLength(DBMap m) {
return m.values().iterator().next().size();
}
public static LinkedList<LinkedList<Object> > toHigh(DBMap m) {
LinkedList<LinkedList<Object> > list = new LinkedList();
Set<String> set = m.keySet();
for(String str : set) {
list.add(m.get(str));
}
return list;
}
public static LinkedList<LinkedList<Object> > toRow(DBMap m) {
LinkedList<LinkedList<Object> > list = new LinkedList();
LinkedList<LinkedList<Object> > hList = toHigh(m);
LinkedList<Object> [] gList = hList.toArray(new LinkedList[0]);
Object [][] g = new Object[gList.length][];
for (int i = 0; i < gList.length; i++) {
g[i] = gList[i].toArray();
}
int size = DBMap.getLength(m);
for (int i = 0; i < size; i++) {
LinkedList<Object> tList = new LinkedList();
int length = m.size();
for (int j = 0; j < length; j++) {
tList.add(g[j][i]);
}
list.add(tList);
}
return list;
}
}
DBMan.java
package db;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.Properties;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
public class DBMan {
private String drivers;
private String url;
private String user;
private String passwd;
private Connection conn;
private PreparedStatement stmt;
private ResultSet rs;
private static DBMan instance;
private DBMan() throws IOException {
reload();
}
public void reload() throws IOException {
InputStream in = DBMan.class.getResourceAsStream("./数据库链接信息.properties");
Properties pro = new Properties();
pro.load(in);
drivers = pro.getProperty("drivers");
url = pro.getProperty("url");
user = pro.getProperty("user");
passwd = pro.getProperty("passwd");
}
public static DBMan getInstance() throws IOException {
if (instance == null) {
instance = new DBMan();
}
return instance;
}
public void display(DBMap map, PrintStream out, String... str) {
if (map == null) {
return;
}
LinkedList[] q = new LinkedList[map.size()];
int col = str.length;
String temp = new String();
// 打印表头,并决定要输出的数据是那些。
if (col == 0) {
Set<String> set = map.keySet();
for (String s : set) {
q[col++] = map.get(s);
temp += s + "\t";
}
} else {
for (int i = 0; i < col; i++) {
q[i] = map.get(str[i]);
temp += str[i] + "\t";
}
}
int row = q[0].size();
out.println(temp);
for (int i = 0; i < row; i++) {
temp = new String();
for (int j = 0; j < col; j++) {
temp += q[j].get(i) + "\t";
}
out.println(temp);
}
}
public synchronized DBMap query(String sql, Object... obj) throws ClassNotFoundException, SQLException {
try {
DBMap map = new DBMap();
open();
stmt = conn.prepareStatement(sql);
for (int i = 0; i < obj.length; i++) {
stmt.setObject(i + 1, obj[i]);
}
rs = stmt.executeQuery();
LinkedList<String> list = new LinkedList();// 存储表头名称
int col = rs.getMetaData().getColumnCount();// 获取列数
// 根据表头名称建立键值对
for (int i = 0; i < col; i++) {
LinkedList<Object> tList = new LinkedList();
list.add(rs.getMetaData().getColumnName(i + 1));
map.put(list.getLast(), tList);
}
while (rs.next()) {
for (int i = 0; i < col; i++) {
LinkedList<Object> tList = map.get(list.get(i));
tList.add(rs.getObject(i + 1));
}
}
close();
return map;
} catch (SQLException ex) {
close();
throw ex;
} catch (ClassNotFoundException ex) {
close();
throw ex;
}
}
public synchronized boolean update(String sql, Object... obj) throws ClassNotFoundException, SQLException {
try {
open();
stmt = conn.prepareStatement(sql);
for (int i = 0; i < obj.length; i++) {
stmt.setObject(i + 1, obj[i]);
}
stmt.executeUpdate();
close();
return true;
} catch (ClassNotFoundException ex) {
close();
throw ex;
} catch (SQLException ex) {
close();
throw ex;
}
}
private synchronized void open() throws ClassNotFoundException, SQLException {
Class.forName(drivers);
conn = DriverManager.getConnection(url, user, passwd);
conn.setAutoCommit(true);
}
private synchronized void close() {
try {
stmt.close();
conn.close();
} catch (SQLException ex) {
}
}
}
接着定义数据类和DAO类
Boss.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package boss;
/**
*
* @author lol
*/
public class Boss {
String name;
String map;
int x;
int y;
String time;
String time2;
String time3;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMap() {
return map;
}
public void setMap(String map) {
this.map = map;
}
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 String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getTime2() {
return time2;
}
public void setTime2(String time2) {
this.time2 = time2;
}
public String getTime3() {
return time3;
}
public void setTime3(String time3) {
this.time3 = time3;
}
public Boss(String name, String map, int x, int y, String time) {
this.name = name;
this.map = map;
this.x = x;
this.y = y;
this.time = time;
}
}
BossControl .java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package boss;
import db.DBMan;
import db.DBMap;
import java.io.IOException;
import java.sql.SQLException;
import java.util.LinkedList;
public class BossControl {
public static void add(Boss e) throws SQLException, IOException, ClassNotFoundException {
String sql = "insert into shentu(name, map, time, time2, time3, x, y) value(?,?,?,?,?,?,?)";
DBMan db = DBMan.getInstance();
db.update(sql, e.getName(), e.getMap(), e.getTime(), e.getTime2(), e.getTime3(), e.getX(), e.getY());
}
public static void update(Boss e) throws SQLException, IOException, ClassNotFoundException {
String sql = "UPDATE shentu SET map = ?, time = ?, time2 = ?, time3 = ?, x = ?, y = ? WHERE name = ?";
DBMan db = DBMan.getInstance();
db.update(sql, e.getMap(), e.getTime(), e.getTime2(), e.getTime3(), e.getX(), e.getY(), e.getName());
}
public static void delete(String name) throws IOException, SQLException, ClassNotFoundException {
String sql = "delete from shentu where name=?";
DBMan db = DBMan.getInstance();
db.update(sql, name);
}
}
GUI制作
直接使用NetBeans的可视化编程即可。
MainFrame.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package main;
import boss.Boss;
import boss.BossControl;
import db.DBMan;
import db.DBMap;
import gui.TextJDialog;
import java.io.IOException;
import java.sql.SQLException;
import java.sql.Time;
import java.util.Date;
import java.util.LinkedList;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableModel;
/**
*
* @author lol
*/
public class MainFrame extends javax.swing.JFrame {
JFrame f;
/**
* Creates new form MainFrame
*/
public MainFrame() {
f = this;
initComponents();
init();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
timeText = new javax.swing.JTextField();
nameText = new javax.swing.JTextField();
yText = new javax.swing.JSpinner();
xText = new javax.swing.JSpinner();
jButton1 = new javax.swing.JButton();
mapText = new javax.swing.JTextField();
time2Text = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
time3Text = new javax.swing.JSpinner();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(jTable1);
getContentPane().add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 260, 340, 350));
jLabel1.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jLabel1.setText("怪兽名字");
getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, -1, 32));
jLabel2.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jLabel2.setText("地图名字");
getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 49, -1, 32));
jLabel3.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jLabel3.setText("位置坐标");
getContentPane().add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 88, -1, 32));
jLabel4.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jLabel4.setText("刷新时间(30分)");
getContentPane().add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 170, -1, 32));
timeText.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
timeText.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
timeTextActionPerformed(evt);
}
});
getContentPane().add(timeText, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 130, 210, 32));
nameText.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
nameText.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
nameTextActionPerformed(evt);
}
});
getContentPane().add(nameText, new org.netbeans.lib.awtextra.AbsoluteConstraints(91, 11, 260, 32));
getContentPane().add(yText, new org.netbeans.lib.awtextra.AbsoluteConstraints(240, 90, 110, 32));
getContentPane().add(xText, new org.netbeans.lib.awtextra.AbsoluteConstraints(90, 90, 110, 32));
jButton1.setText("确认");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
getContentPane().add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 210, 100, 40));
mapText.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
mapText.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mapTextActionPerformed(evt);
}
});
getContentPane().add(mapText, new org.netbeans.lib.awtextra.AbsoluteConstraints(91, 50, 260, 32));
time2Text.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
time2Text.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
time2TextActionPerformed(evt);
}
});
getContentPane().add(time2Text, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 170, 210, 30));
jLabel5.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jLabel5.setText("刷新时间");
getContentPane().add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 210, 80, 40));
jLabel6.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jLabel6.setText("死亡时间(30分)");
getContentPane().add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 130, 130, 32));
time3Text.setValue(30);
getContentPane().add(time3Text, new org.netbeans.lib.awtextra.AbsoluteConstraints(90, 210, 150, 40));
pack();
}// </editor-fold>
private void timeTextActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void nameTextActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private Boss getBoss() {
String name = nameText.getText();
String map = mapText.getText();
int x = Integer.parseInt(xText.getValue().toString());
int y = Integer.parseInt(yText.getValue().toString());
String time = String.valueOf(timeText.getText());
return new Boss(name, map, x, y, time);
}
// 显示点击的客户信息
public void showItem(int row) {
TableModel m = jTable1.getModel();
nameText.setText(m.getValueAt(row, 1).toString());
mapText.setText(m.getValueAt(row, 4).toString());
xText.setValue(Integer.parseInt(m.getValueAt(row, 2).toString()));
yText.setValue(Integer.parseInt(m.getValueAt(row, 3).toString()));
}
private void save() {
Boss boss = getBoss();
long time = new Date().getTime();
time += Long.parseLong(time3Text.getValue().toString()) * 60 * 1000;
Date d = new Date(time);
boss.setTime2(String.valueOf(d.getHours()) + ":" + String.valueOf(d.getMinutes()) + ":" + String.valueOf(d.getSeconds()));
boss.setTime3(time3Text.getValue().toString());
try {
BossControl.add(boss);
} catch (SQLException | IOException | ClassNotFoundException ex) {
try {
System.out.println("已经存在,进行修改" + ex.getMessage());
BossControl.update(boss);
} catch (SQLException | IOException | ClassNotFoundException ex1) {
System.out.println("数据库出错---" + ex1.getMessage() + "\n");
}
}
init();
JOptionPane.showMessageDialog(this, "操作成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
save();
}
private void mapTextActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void time2TextActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
public void init() {
String sql = "select name, map, time2, x, y from shentu";
this.setResizable(false);
DBMap m;
try {
m = DBMan.getInstance().query(sql);
showTable(m, title);
} catch (IOException | ClassNotFoundException | SQLException ex) {
System.out.println("数据库出错---" + ex.getMessage() + "\n");
}
Thread t = new Thread() {
@Override
public void run() {
while (true) {
Date d = new Date();
timeText.setText(String.valueOf(d.getHours()) + ":" + String.valueOf(d.getMinutes()) + ":" + String.valueOf(d.getSeconds()));
long time = new Date().getTime();
time += Long.parseLong(time3Text.getValue().toString()) * 60 * 1000;
d = new Date(time);
time2Text.setText(String.valueOf(d.getHours()) + ":" + String.valueOf(d.getMinutes()) + ":" + String.valueOf(d.getSeconds()));
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
}
}
};
t.start();
}
// 显示数据
public void showTable(Map<String, LinkedList<Object>> map, String... title) {
// 将数据生成二维数组
Set<String> set = map.keySet();
Object[] a = map.values().toArray();
int size = ((LinkedList<Object>) a[0]).size();
Object[][] cc = new Object[size][a.length];
for (int i = 0; i < a.length; i++) {
LinkedList<Object> l = (LinkedList<Object>) a[i];
for (int j = 0; j < size; j++) {
cc[j][i] = l.get(j);
}
}
// 将二维数组导入并设置标头
Object[] ar = set.toArray();
if (title.length == set.size()) {
ar = title;
}
// 实例化,并点击事件
jTable1 = new JTable(cc, ar) {
@Override
public boolean isCellEditable(int row, int column) {
if (lastCol == column && lastRow == row) {
TextJDialog t = new TextJDialog(f, true, "确认删除请输入Y");
if (t.getText(0).equalsIgnoreCase("Y")) {
try {
BossControl.delete(jTable1.getModel().getValueAt(row, 1).toString());
init();
JOptionPane.showMessageDialog(null, "删除成功", "提示", JOptionPane.INFORMATION_MESSAGE);
} catch (Exception ex) {
JOptionPane.showMessageDialog(f, ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
}
}
} else {
showItem(row);
}
lastRow = row;
lastCol = column;
return false;
}
};
// 将单元格内容居中显示
DefaultTableCellRenderer render = new DefaultTableCellRenderer();
render.setHorizontalAlignment(SwingConstants.CENTER);
for (int i = 0; i < ar.length; i++) {
jTable1.getColumn(ar[i]).setCellRenderer(render);
}
jScrollPane1.setViewportView(jTable1);
this.revalidate();
}
private int lastRow;
private int lastCol;
String[] title = {"刷新时间", "怪兽名字", "X坐标", "Y坐标", "地图名称"};
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
private javax.swing.JTextField mapText;
private javax.swing.JTextField nameText;
private javax.swing.JTextField time2Text;
private javax.swing.JSpinner time3Text;
private javax.swing.JTextField timeText;
private javax.swing.JSpinner xText;
private javax.swing.JSpinner yText;
// End of variables declaration
}
工具类
这个是之前写好的,可以自定义进行弹框输入并返回。
TextJDialog .java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package gui;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JTextField;
/**
*
* @author lol
*/
public class TextJDialog extends JDialog {
private JTextField[] text;
private int size;
private TextJDialog jd;
public TextJDialog(Frame owner, boolean modal, String... str) {
super(owner, modal);
this.setTitle("请输入以下内容");
if (str.length == 0) {
return;
}
TextListener lis = new TextListener();
jd = this;
size = str.length;
text = new JTextField[size];
this.setLayout(null);
int i;
int maxLength = -1;
for (i = 0; i < size; i++) {
JLabel la = new JLabel(str[i]);
int l = str[i].length();
if (l > maxLength) {
maxLength = l;
}
la.setBounds(10, 5 + 30 * i, 15 * l, 25);
text[i] = new JTextField();
text[i].setBounds(20 + 15 * l, 5 + 30 * i, 150, 25);
text[i].addActionListener(lis);
this.add(la);
this.add(text[i]);
}
JButton b = new JButton("确认");
b.addActionListener(lis);
b.setBounds(170 + maxLength * 15, 5 + 30 * (i - 1), 60, 25);
this.addKeyListener(lis);
this.add(b);
this.setBounds(owner.getX() + owner.getWidth() / 2 - 150, owner.getY() + owner.getHeight() / 2 - (size + 1) * 20, 275 + maxLength * 15, (size + 1) * 40);
this.setVisible(true);
}
public String getText(int id) {
if (id >= 0 && id < size) {
return text[id].getText();
} else {
return null;
}
}
public String[] getTexts() {
String[] str = new String[size];
for (int i = 0; i < size; i++) {
str[i] = text[i].getText();
}
return str;
}
class TextListener extends KeyAdapter implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
jd.setVisible(false);
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyChar() == KeyEvent.VK_ENTER) {
jd.setVisible(false);
}
}
}
}
主函数
Main.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package main;
/**
*
* @author lol
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
MainFrame m = new MainFrame();
m.setTitle("神途BOSS计时器------by.凌恋");
m.setVisible(true);
m.setAlwaysOnTop(true); // 置顶
}
}