最终版本彩虹圣经

package e;

import java.awt.Color;
import java.awt.Font;
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.util.ArrayList;
import java.util.HashMap;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
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.UIManager;
import javax.swing.plaf.FontUIResource;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;

public class Main extends JFrame implements ActionListener, KeyListener, MouseListener {
	private static Main m = new Main();

	public static void main(String[] args) {

		m.setBounds(0, 0, 1000, 700);
		m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		m.setExtendedState(JFrame.MAXIMIZED_BOTH);
		m.setTitle("彩虹圣经-----S和D向后滚动,W和E向前滚动,1~9向后滚动,1速度最慢,9速度最快");
		m.setVisible(true);
	}

	public Main() {
		this.setJMenuBar(this.jmb());
		this.add(this.jspCenter());
	}

	private final String[] sLei = { "律法书", "王国前历史书", "王国时历史书", "被掳后历史书", "诗歌·智慧书", "大先知书", "王国时小先知书", "被掳后小先知书", "四福音",
			"教会历史", "保罗书信", "其他使徒书信", "对约翰的启示" };
	private final String[] sCsj = { "创世记", "出埃及记", "利未记", "民数记", "申命记" };
	private final String[] sLss0 = { "约书亚记", "士师记", "路得记" };
	private final String[] sLss1 = { "撒母耳记上", "撒母耳记下", "列王纪上", "列王纪下", "历代志上", "历代志下" };
	private final String[] sLss2 = { "以斯拉记", "尼希米记", "以斯帖记" };
	private final String[] sSgzhs = { "约伯记", "诗篇", "箴言", "传道书", "雅歌" };
	private final String[] sXzs0 = { "以赛亚书", "耶利米书", "耶利米哀歌", "以西结书", "但以理书" };
	private final String[] sXzs1 = { "何西阿书", "约珥书", "阿摩司书", "俄巴底亚书", "约拿书", "弥迦书", "那鸿书", "哈巴谷书", "西番雅书" };
	private final String[] sXzs2 = { "哈该书", "撒迦利亚书", "玛拉基书" };
	private final String[] sSfy = { "马太福音", "马可福音", "路加福音", "约翰福音" };
	private final String[] sJhls = { "使徒行传" };
	private final String[] sSx0 = { "罗马书", "哥林多前书", "哥林多后书", "加拉太书", "以弗所书", "腓立比书", "歌罗西书", "帖撒罗尼迦前书", "帖撒罗尼迦后书",
			"提摩太前书", "提摩太后书", "提多书", "腓利门书" };
	private final String[] sSx1 = { "希伯来书", "雅各书", "彼得前书", "彼得后书", "约翰壹书", "约翰贰书", "约翰叁书", "犹大书" };
	private final String[] sDyhdqs = { "启示录" };
	private final String[][] sHB = { sCsj, sLss0, sLss1, sLss2, sSgzhs, sXzs0, sXzs1, sXzs2, sSfy, sJhls, sSx0, sSx1,
			sDyhdqs };
	private final JMenuBar jmb = new JMenuBar();
	private final JMenu[] jm = new JMenu[sLei.length];
	private final JTextPane jtp = new JTextPane();
	private final JScrollPane jsp = new JScrollPane(jtp);

	public JMenuBar jmb() {
		this.jmb.setBackground(Color.BLACK);

		for (int i = 0; i < sLei.length; i++) {
			jm[i] = new JMenu(sLei[i]);
			jm[i].setFont(new Font("微软雅黑", Font.BOLD, 20));
			jm[i].setForeground(Color.WHITE);
			jmb.add(jm[i]);
			JMenuItem[] jmi = new JMenuItem[sHB[i].length];

			for (int j = 0; j < sHB[i].length; j++) {
				jmi[j] = new JMenuItem(sHB[i][j]);
				jmi[j].setFont(new Font("微软雅黑", Font.BOLD, 20));
				jmi[j].setBackground(Color.BLACK);
				jmi[j].setForeground(Color.WHITE);
				jmi[j].addActionListener(this);
				jm[i].add(jmi[j]);
				// jm[i].addSeparator();
			}
		}
		return jmb;
	}

	public JScrollPane jspCenter() {
		this.jtp.setEditable(false);
		this.jtp.setBackground(Color.BLACK);
		this.jtp.setFont(new FontUIResource("微软雅黑", Font.BOLD, 80));
		this.jtp.addKeyListener(this);
		this.jtp.addMouseListener(this);
		this.jsp.addMouseListener(this);
		return this.jsp;
	}

	public JPopupMenu jpm() {
		final JPopupMenu jpm = new JPopupMenu("圣经目录");
		String[] sLei = { "律法书", "王国前历史书", "王国时历史书", "被掳后历史书", "诗歌·智慧书", "大先知书", "王国时小先知书", "被掳后小先知书", "四福音", "教会历史",
				"保罗书信", "其他使徒书信", "对约翰的启示" };
		String[] sCsj = { "创世记", "出埃及记", "利未记", "民数记", "申命记" };
		String[] sLss0 = { "约书亚记", "士师记", "路得记" };
		String[] sLss1 = { "撒母耳记上", "撒母耳记下", "列王纪上", "列王纪下", "历代志上", "历代志下" };
		String[] sLss2 = { "以斯拉记", "尼希米记", "以斯帖记" };
		String[] sSgzhs = { "约伯记", "诗篇", "箴言", "传道书", "雅歌" };
		String[] sXzs0 = { "以赛亚书", "耶利米书", "耶利米哀歌", "以西结书", "但以理书" };
		String[] sXzs1 = { "何西阿书", "约珥书", "阿摩司书", "俄巴底亚书", "约拿书", "弥迦书", "那鸿书", "哈巴谷书", "西番雅书" };
		String[] sXzs2 = { "哈该书", "撒迦利亚书", "玛拉基书" };
		String[] sSfy = { "马太福音", "马可福音", "路加福音", "约翰福音" };
		String[] sJhls = { "使徒行传" };
		String[] sSx0 = { "罗马书", "哥林多前书", "哥林多后书", "加拉太书", "以弗所书", "腓立比书", "歌罗西书", "帖撒罗尼迦前书", "帖撒罗尼迦后书", "提摩太前书",
				"提摩太后书", "提多书", "腓利门书" };
		String[] sSx1 = { "希伯来书", "雅各书", "彼得前书", "彼得后书", "约翰壹书", "约翰贰书", "约翰叁书", "犹大书" };
		String[] sDyhdqs = { "启示录" };
		String[][] sHB = { sCsj, sLss0, sLss1, sLss2, sSgzhs, sXzs0, sXzs1, sXzs2, sSfy, sJhls, sSx0, sSx1, sDyhdqs };

		// JMenu[] jm = new JMenu[sLei.length];

		for (int i = 0; i < jm.length; i++) {
			if (i == 0) {
				jpm.addSeparator();
				JLabel jl = new JLabel("旧约");
				jl.setForeground(Color.RED);
				jl.setFont(new FontUIResource("微软雅黑", Font.BOLD, 20));
				jpm.add(jl);
				jpm.addSeparator();
			}

			if (i == 1 || i == 4 || i == 5 || i == 8 || i == 9 || i == 10 || i == 12) {
				jpm.addSeparator();
			}
			if (i == 8) {
				jpm.addSeparator();
				JLabel jl = new JLabel("新约");
				jl.setForeground(Color.RED);
				jl.setFont(new FontUIResource("微软雅黑", Font.BOLD, 20));
				jpm.add(jl);
				jpm.addSeparator();
			}
			jm[i] = new JMenu(sLei[i]);
			jm[i].setFont(new FontUIResource("微软雅黑", Font.BOLD, 20));
			JMenuItem[] jmi = new JMenuItem[sHB[i].length];
			for (int j = 0; j < sHB[i].length; j++) {
				jmi[j] = new JMenuItem(sHB[i][j]);
				jmi[j].setFont(new FontUIResource("微软雅黑", Font.BOLD, 20));
				jmi[j].addActionListener(this);
				jm[i].add(jmi[j]);
			}
			jpm.add(jm[i]);
		}
		return jpm;

	}

	public void jspFill(String s) {
		String ChapterSN = "";
		String VerseSN = "";

		UIManager.put("OptionPane.messageFont", new FontUIResource("微软雅黑", Font.BOLD, 20));
		UIManager.put("OptionPane.buttonFont", new FontUIResource("微软雅黑", Font.BOLD, 20));
		UIManager.put("TextField.font", new FontUIResource("微软雅黑", Font.BOLD, 20));
		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();
		}

		ArrayList<HashMap<String, String>> alhmss = this.select(s, ChapterSN, VerseSN);
		this.jtp.setText("");
		StyledDocument sd = jtp.getStyledDocument();
		Style sty = jtp.addStyle(null, null);
		Color[] c = { new Color(255, 0, 0), new Color(255, 128, 64), new Color(255, 255, 0), new Color(128, 255, 128),
				new Color(0, 255, 255), new Color(0, 128, 255), new Color(255, 0, 255), new Color(255, 128, 255) };

		for (int i = 0; i < alhmss.size(); i++) {
			String zhang = alhmss.get(i).get("zhang");
			String jie = alhmss.get(i).get("jie");
			String jingwen = alhmss.get(i).get("jingwen");
			String zhangjiejingwen = "【" + s + "】" + zhang + ":" + jie + jingwen + "\n";

			if (i % 8 == 0) {
				StyleConstants.setForeground(sty, new Color(255, 64, 64));
			} else if (i % 8 == 1) {
				StyleConstants.setForeground(sty, new Color(255, 128, 64));
			} else if (i % 8 == 2) {
				StyleConstants.setForeground(sty, new Color(255, 255, 0));
			} else if (i % 8 == 3) {
				StyleConstants.setForeground(sty, new Color(128, 255, 128));
			} else if (i % 8 == 4) {
				StyleConstants.setForeground(sty, new Color(128, 255, 255));
			} else if (i % 8 == 5) {
				StyleConstants.setForeground(sty, new Color(0, 152, 255));
			} else if (i % 8 == 6) {
				StyleConstants.setForeground(sty, new Color(255, 0, 255));
			} else if (i % 8 == 7) {
				StyleConstants.setForeground(sty, new Color(255, 128, 255));
			} else {
				StyleConstants.setForeground(sty, Color.WHITE);
			}

			try {
				sd.insertString(sd.getLength(), zhangjiejingwen, sty);
			} catch (Exception e) {
				e.printStackTrace();
			}

		}

		this.jtp.setCaretPosition(0);
		this.jtp.requestFocusInWindow();

	}

	public static ArrayList<HashMap<String, String>> select(String juan, String zhang, String jie) {
		ArrayList<HashMap<String, String>> alhmss = new ArrayList<HashMap<String, String>>();
		try {
			Class.forName("org.sqlite.JDBC");
			try (Connection conn = DriverManager.getConnection("jdbc:sqlite:hb.sqlite3")) {
				try (PreparedStatement ps = conn.prepareStatement(
						"select juan, suoxie, zhang, jie, jingwen from t_hb where juan = ? and zhang = ? and jie between ? and 200")) {
					ps.setString(1, juan);
					ps.setString(2, zhang);
					ps.setString(3, jie);
					try (ResultSet rs = ps.executeQuery()) {
						while (rs.next()) {
							HashMap<String, String> hmss = new HashMap<String, String>();
							hmss.put("juan", rs.getString("juan"));
							hmss.put("suoxie", rs.getString("suoxie"));
							hmss.put("zhang", rs.getString("zhang"));
							hmss.put("jie", rs.getString("jie"));
							hmss.put("jingwen", rs.getString("jingwen"));
							alhmss.add(hmss);
						}
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return alhmss;
	}

	@Override
	public void mouseClicked(MouseEvent me) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseEntered(MouseEvent me) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseExited(MouseEvent me) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mousePressed(MouseEvent me) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseReleased(MouseEvent me) {
		if (me.isPopupTrigger()) {
			this.jpm().show(me.getComponent(), me.getX(), me.getY());
		}

	}

	@Override
	public void keyPressed(KeyEvent ke) {
		int i = ke.getKeyCode();
//		System.out.println(i);
		JScrollBar jsb = jsp.getVerticalScrollBar();
		int j = jsb.getValue();
		if (i == 68 || i == 83) {
			jsb.setValue(j += 5);
		} else if (i == 69 || i == 87) {
			jsb.setValue(j -= 5);
		} else if (i == 97 || i == 49) {
			jsb.setValue(j += 1);
		} else if (i == 98 || i == 50) {
			jsb.setValue(j += 2);
		} else if (i == 99 || i == 51) {
			jsb.setValue(j += 3);
		} else if (i == 100 || i == 52) {
			jsb.setValue(j += 4);
		} else if (i == 101 || i == 53) {
			jsb.setValue(j += 5);
		} else if (i == 102 || i == 54) {
			jsb.setValue(j += 6);
		} else if (i == 103 || i == 55) {
			jsb.setValue(j += 7);
		} else if (i == 104 || i == 56) {
			jsb.setValue(j += 8);
		} else if (i == 105 || i == 57) {
			jsb.setValue(j += 9);
		}

	}

	@Override
	public void keyReleased(KeyEvent ke) {
		// TODO Auto-generated method stub

	}

	@Override
	public void keyTyped(KeyEvent ke) {
		// TODO Auto-generated method stub

	}

	@Override
	public void actionPerformed(ActionEvent ae) {
		String s = ae.getActionCommand();
		System.out.println(s);
		if (!s.equals("")) {
			this.jspFill(s);
		}

	}

}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值