Java.main圣经timer版本。

package a;

import java.awt.Color;
import java.awt.Font;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.HashMap;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.Timer;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;

public class Main extends JFrame {
	public static GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
	public static GraphicsDevice[] graphicsDevices = graphicsEnvironment.getScreenDevices();
	public static int length = graphicsDevices.length;
	public static final String[] s = { "创世记", "出埃及记", "利未记", "民数记", "申命记", "约书亚记", "士师记", "路得记", "撒母耳记上", "撒母耳记下",
			"列王纪上", "列王纪下", "历代志上", "历代志下", "以斯拉记", "尼希米记", "以斯帖记", "约伯记", "诗篇", "箴言", "传道书", "雅歌", "以赛亚书", "耶利米书",
			"耶利米哀歌", "以西结书", "但以理书", "何西阿书", "约珥书", "阿摩司书", "俄巴底亚书", "约拿书", "弥迦书", "那鸿书", "哈巴谷书", "西番雅书", "哈该书",
			"撒迦利亚书", "玛拉基书", "马太福音", "马可福音", "路加福音", "约翰福音", "使徒行传", "罗马书", "哥林多前书", "哥林多后书", "加拉太书", "以弗所书", "腓立比书",
			"歌罗西书", "帖撒罗尼迦前书", "帖撒罗尼迦后书", "提摩太前书", "提摩太后书", "提多书", "腓利门书", "希伯来书", "雅各书", "彼得前书", "彼得后书", "约翰壹书",
			"约翰贰书", "约翰叁书", "犹大书", "启示录" };
	public static final String[] s0 = { "律法书", "王国前历史书", "王国时历史书", "被掳后历史书", "诗歌·智慧书", "大先知书", "王国时小先知书", "被掳后小先知书",
			"四福音", "教会历史", "保罗书信", "其他使徒书信", "对约翰的启示" };
	public static final String[] s1 = { "创世记", "出埃及记", "利未记", "民数记", "申命记" };
	public static final String[] s2 = { "约书亚记", "士师记", "路得记" };
	public static final String[] s3 = { "撒母耳记上", "撒母耳记下", "列王纪上", "列王纪下", "历代志上", "历代志下" };
	public static final String[] s4 = { "以斯拉记", "尼希米记", "以斯帖记" };
	public static final String[] s5 = { "约伯记", "诗篇", "箴言", "传道书", "雅歌" };
	public static final String[] s6 = { "以赛亚书", "耶利米书", "耶利米哀歌", "以西结书", "但以理书" };
	public static final String[] s7 = { "何西阿书", "约珥书", "阿摩司书", "俄巴底亚书", "约拿书", "弥迦书", "那鸿书", "哈巴谷书", "西番雅书" };
	public static final String[] s8 = { "哈该书", "撒迦利亚书", "玛拉基书" };
	public static final String[] s9 = { "马太福音", "马可福音", "路加福音", "约翰福音" };
	public static final String[] s10 = { "使徒行传" };
	public static final String[] s11 = { "罗马书", "哥林多前书", "哥林多后书", "加拉太书", "以弗所书", "腓立比书", "歌罗西书", "帖撒罗尼迦前书", "帖撒罗尼迦后书",
			"提摩太前书", "提摩太后书", "提多书", "腓利门书" };
	public static final String[] s12 = { "希伯来书", "雅各书", "彼得前书", "彼得后书", "约翰壹书", "约翰贰书", "约翰叁书", "犹大书" };
	public static final String[] s13 = { "启示录" };
	public static final String[] sExit = { "退出" };
	public static final String[][] sShengJing = { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13 };
	public static final Color[] c = { new Color(255, 64, 64), new Color(128, 255, 0), new Color(153, 102, 204),
			new Color(255, 153, 0), new Color(51, 102, 255), new Color(255, 51, 0), new Color(0, 255, 0),
			new Color(153, 51, 255), new Color(255, 255, 0), new Color(53, 102, 255), new Color(255, 102, 0),
			new Color(0, 255, 102) };
	public static final Color[] c6 = { Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.CYAN, Color.PINK };

	public static final Color[] c4 = { new Color(255, 127, 255), new Color(127, 255, 127), new Color(127, 255, 255),
			new Color(255, 255, 127) };
	public static final Color[] c4_2 = { new Color(255, 63, 63), new Color(63, 255, 63), new Color(63, 204, 255),
			Color.YELLOW };
	public static final Color[] c8 = { Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.CYAN, Color.BLUE,
			Color.MAGENTA, Color.PINK };

	public static void main(String[] args) {
		Main main = new Main();

		JTextPane jTextPane = new JTextPane();
		jTextPane.setText("鼠标右键选择卷章节经文,ESC退出,d向下翻页,e向上翻页,1234567890都是向下翻页,1最慢,0最快");
		jTextPane.setEditable(false);
		jTextPane.setBackground(Color.BLACK);
		jTextPane.setFont(new Font("微软雅黑", Font.BOLD, 80));
		JScrollPane jScrollPane = new JScrollPane(jTextPane);
		JScrollBar jScrollBar = jScrollPane.getVerticalScrollBar();
		main.add(jScrollPane);
		jTextPane.addKeyListener(new KeyListener() {
			public void keyTyped(KeyEvent e) {
			}

			public void keyReleased(KeyEvent e) {
			}

			public void keyPressed(KeyEvent e) {
				int i = e.getKeyCode();
				int getValue = jScrollBar.getValue();
				if (i == KeyEvent.VK_E || i == KeyEvent.VK_BACK_SPACE) {
					jScrollBar.setValue(getValue -= 4);
				} else if (i == KeyEvent.VK_D) {
					jScrollBar.setValue(getValue += 4);
				} else if (i == KeyEvent.VK_1) {
					Main.timer(jScrollBar, 1);
				} else if (i == KeyEvent.VK_2) {
					Main.timer(jScrollBar, 2);
				} else if (i == KeyEvent.VK_3) {
					Main.timer(jScrollBar, 3);
				} else if (i == KeyEvent.VK_4 || i == KeyEvent.VK_ENTER) {
					Main.timer(jScrollBar, 4);
				} else if (i == KeyEvent.VK_5) {
					Main.timer(jScrollBar, 5);
				} else if (i == KeyEvent.VK_6) {
					Main.timer(jScrollBar, 6);
				} else if (i == KeyEvent.VK_7) {
					Main.timer(jScrollBar, 7);
				} else if (i == KeyEvent.VK_8) {
					Main.timer(jScrollBar, 8);
				} else if (i == KeyEvent.VK_9) {
					Main.timer(jScrollBar, 9);
				} else if (i == KeyEvent.VK_0 || i == KeyEvent.VK_SPACE) {
					Main.timer(jScrollBar, 0);
				} else if (i == KeyEvent.VK_F5) {
					// if (!JF2.jf2.isVisible()) {
					// JF2.jf2.setVisible(true);
					// } else {
					// JF2.jf2.setVisible(false);
					// }
					// this.requestFocus();
					// this.jTextPane.requestFocusInWindow();
					// System.out.println("获得焦点");
				} else if (i == KeyEvent.VK_ESCAPE) {
					int result = JOptionPane.showConfirmDialog(main, "退出", "退出", JOptionPane.YES_NO_OPTION,
							JOptionPane.QUESTION_MESSAGE);
					if (result == JOptionPane.OK_OPTION) {
						main.setVisible(false);
						main.dispose();
						System.exit(0);
						return;
					}
				}

			}
		});

		JPopupMenu jPopupMenu = new JPopupMenu();

		JMenu[] jMenus = new JMenu[s0.length];
		for (int i = 0; i < s0.length; i++) {
			jMenus[i] = new JMenu(s0[i]);
			jMenus[i].setFont(new Font("微软雅黑", Font.BOLD, 20));
			if (i == 0 || i == 8) {
				jMenus[i].setForeground(Color.RED);
			}
			jPopupMenu.add(jMenus[i]);
			JMenuItem[] jMenuItems = new JMenuItem[sShengJing[i].length];
			for (int j = 0; j < sShengJing[i].length; j++) {
				jMenuItems[j] = new JMenuItem(sShengJing[i][j]);
				jMenuItems[j].setFont(new Font("微软雅黑", Font.BOLD, 20));
				jMenuItems[j].addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						String s = e.getActionCommand();
						if (!s.equals("")) {
							String[] slist = main.input(s);
							main.jspFill(jTextPane, slist[0], slist[1], slist[2]);
						}
					}
				});
				jMenus[i].add(jMenuItems[j]);
			}
		}

		jTextPane.addMouseListener(new MouseListener() {
			public void mouseReleased(MouseEvent e) {
				if (e.isPopupTrigger()) {
					jPopupMenu.show(e.getComponent(), e.getX(), e.getY());
				}
			}

			public void mousePressed(MouseEvent e) {
			}

			public void mouseExited(MouseEvent e) {
			}

			public void mouseEntered(MouseEvent e) {
			}

			public void mouseClicked(MouseEvent e) {
			}
		});

		main.setBounds(0, 0, 1000, 700);
		main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		main.setExtendedState(JFrame.MAXIMIZED_BOTH);
		// main.setUndecorated(true);
		main.setVisible(true);
	}

	public static Timer timer = null;

	public static void timer(JScrollBar jScrollBar, int speed) {
		if (Main.timer != null) {
			Main.timer.stop();
		}
		timer = new Timer(100, new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int getValue = jScrollBar.getValue();
				jScrollBar.setValue(getValue += speed);
			}
		});
		timer.restart();
	}

	public static String[] input(String FullName) {
		String ChapterSN = "";
		String VerseSN = "";

		while (ChapterSN.equals("")) {
			String jopid = JOptionPane.showInputDialog("请输入要查询的章数", "1");
			if (jopid == null || jopid.equals("") || jopid.length() > 3 || !jopid.trim().matches("^[0-9]*$")) {
				continue;
			}
			ChapterSN = jopid.trim();
		}

		while (VerseSN.equals("")) {
			String jopid = JOptionPane.showInputDialog("请输入要查询的节数", "1");
			if (jopid == null || jopid.equals("") || jopid.length() > 3 || !jopid.trim().matches("^[0-9]*$")) {
				continue;
			}
			VerseSN = jopid.trim();
		}
		String[] slist = { FullName, ChapterSN, VerseSN };
		return slist;
	}

	public static void jspFill(JTextPane jTextPane, String FullName, String ChapterSN, String VerseSN) {
		try {
			StyledDocument sd = jTextPane.getStyledDocument();
			Style sty = jTextPane.addStyle(null, null);
			SimpleAttributeSet sas = new SimpleAttributeSet();
			StyleConstants.setLineSpacing(sas, 0f);
			sd.setParagraphAttributes(0, sd.getLength(), sas, false);

			ArrayList<HashMap<String, Object>> alhmss = Main.selectSqlite3(FullName, ChapterSN, VerseSN);
			jTextPane.setText("");

			StyleConstants.setForeground(sty, new Color(255, 255, 255));
			StyleConstants.setFontSize(sty, 100);
			sd.insertString(sd.getLength(), FullName + "第" + ChapterSN + "章\n", sty);

			for (int i = 0; i < alhmss.size(); i++) {
				// String zhang = alhmss.get(i).get("ChapterSN").toString();
				String jie = alhmss.get(i).get("VerseSN").toString();
				String jingwen = alhmss.get(i).get("strjw").toString();

				StyleConstants.setForeground(sty, Main.c4[i % Main.c4.length]);
				StyleConstants.setFontSize(sty, 40);
				sd.insertString(sd.getLength(), jie + "\t", sty);
				StyleConstants.setFontSize(sty, 80);
				sd.insertString(sd.getLength(), jingwen + "\n", sty);

			}
			sd.insertString(sd.getLength(), "\n\n\n\n\n\n\n\n\n\n", sty);
		} catch (Exception e) {
			e.printStackTrace();
		}
		jTextPane.setCaretPosition(0);
		jTextPane.requestFocusInWindow();

	}

	public static Connection connection = null;
	public static PreparedStatement preparedStatement = null;
	public static ResultSet resultSet = null;

	public static ArrayList<HashMap<String, Object>> selectSqlite3(String FullName, String ChapterSN, String VerseSN) {

		ArrayList<HashMap<String, Object>> alhmso = new ArrayList<HashMap<String, Object>>();

		try {
			Class.forName("org.sqlite.JDBC");
			connection = DriverManager.getConnection("jdbc:sqlite:shengjing.sqlite3");
			preparedStatement = connection.prepareStatement(
					"select * from t_shengjing where FullName = ? and ChapterSN = ? and VerseSN >= ? order by rowid asc");
			preparedStatement.setString(1, FullName);
			preparedStatement.setString(2, ChapterSN);
			preparedStatement.setString(3, VerseSN);
			resultSet = preparedStatement.executeQuery();
			ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
			int getColumnCount = resultSetMetaData.getColumnCount();

			while (resultSet.next()) {
				HashMap<String, Object> hmso = new HashMap<String, Object>();
				for (int i = 1; i <= getColumnCount; i++) {
					String getColumnName = resultSetMetaData.getColumnName(i);
					Object sCellValue = resultSet.getObject(getColumnName);
					if (sCellValue == null) {
						sCellValue = "";
					}
					hmso.put(getColumnName, sCellValue);
				}
				alhmso.add(hmso);
			}
		} catch (Exception exception) {
			exception.printStackTrace();
		} finally {
			try {
				if (resultSet != null) {
					resultSet.close();
					resultSet = null;
				}
				if (preparedStatement != null) {
					preparedStatement.close();
					preparedStatement = null;
				}
				if (connection != null) {
					connection.close();
					connection = null;
				}
			} catch (Exception exception) {
				exception.printStackTrace();
			}

		}

		return alhmso;
	}

	public static ArrayList<HashMap<String, Object>> selectAccess(String FullName, String ChapterSN, String VerseSN)
			throws Exception {

		ArrayList<HashMap<String, Object>> alhmso = new ArrayList<HashMap<String, Object>>();

		try {
			Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
			connection = DriverManager.getConnection("jdbc:ucanaccess://bible7.dat", "admin", "gqrjabcde");
			preparedStatement = connection.prepareStatement(
					"select * from bible, bibleid where bible.VolumeSN = bibleid.SN and FullName = ? and ChapterSN = ? and VerseSN >= ? order by bible.id asc");
			preparedStatement.setString(1, FullName);
			preparedStatement.setString(2, ChapterSN);
			preparedStatement.setString(3, VerseSN);
			resultSet = preparedStatement.executeQuery();
			ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
			int getColumnCount = resultSetMetaData.getColumnCount();
			while (resultSet.next()) {
				HashMap<String, Object> hmso = new HashMap<String, Object>();
				for (int i = 1; i <= getColumnCount; i++) {
					String getColumnName = resultSetMetaData.getColumnName(i);
					Object sCellValue = resultSet.getObject(getColumnName);
					if (sCellValue == null) {
						sCellValue = "";
					}
					hmso.put(getColumnName, sCellValue);
				}
				alhmso.add(hmso);
			}
		} catch (Exception exception) {
			exception.printStackTrace();
		} finally {
			try {
				if (resultSet != null) {
					resultSet.close();
					resultSet = null;
				}
				if (preparedStatement != null) {
					preparedStatement.close();
					preparedStatement = null;
				}
				if (connection != null) {
					connection.close();
					connection = null;
				}
			} catch (Exception exception) {
				exception.printStackTrace();
			}
		}

		return alhmso;
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值