⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configpane.java

📁 一个简单的程序稳操胜券用拖把有稳操胜券
💻 JAVA
字号:
/**
  * @(#)server.frm.panes.ConfigPane.java  2008-8-28  
  * Copy Right Information	: Tarena
  * Project					: JavaQQ
  * JDK version used		: jdk1.6.4
  * Comments				: 系统配置类。
  * Version					: 1.0
  * Sr	Date		Modified By		Why & What is modified
  * 1.	2008-8-28 	小猪     		新建
  **/
package server.frm.panes;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;

import server.frm.Server;
import tools.GetParameter;

 /**
 * 系统配置类。<br>
 * 完成的功能:1.端口配置。
 * 2.要屏蔽的JQ号
 * 3.生成的JQ号的位数,最小位和最大位
 * 4.是否自动备份日志、自动删除日志的天数
 * 5.数据方式选择1.文件方式2.数据库方式(连接参数、用户名、密码、解码集)
 * 2008-8-28
 * @author		达内科技[Tarena Training Group]
 * @version	1.0
 * @since		JDK1.6(建议) 
 */
public class ConfigPane extends JPanel implements ActionListener{

	/** 系统启动的端口 */
	private JLabel lblPort = new MyJLalel("端    口",90);
	private JTextField txtPort = new MyJTextField();
	/** JQ要屏蔽申请的JQ号 */
	private JLabel lblNoJQ = new MyJLalel("屏蔽号码",90);
	private JTextArea areaNoJQ = new JTextArea();
	/** 生成JQ的最小位数和最大位数 */
	private JLabel lblMinDigit = new MyJLalel("最小位数",90);
	private JTextField txtMinDigit = new MyJTextField();
	private JLabel lblMaxDigit = new MyJLalel("最小位数",90);
	private JTextField txtMaxDigit = new MyJTextField();
	/** 是否自动备份日志 */
	private JLabel lblIsAutoBak = new MyJLalel("备份日志",90);
	private JCheckBox cbIsAutoBak = new JCheckBox("自动备份日志",true);
	/** 自动删除n天前的日志 */
	private JLabel lblDelDay = new MyJLalel("自动删除",90);
	private JTextField txtDelDay = new MyJTextField();
	/** 采用数据的方式 */
	private JLabel lblDataWay  = new MyJLalel("数据方式",90);
	private JRadioButton rbFile = new JRadioButton("文件方式");
	private JRadioButton rbData = new JRadioButton("数据库方式");
	
	private JLabel lblDriver = new MyJLalel("驱动程序",90);
	private JTextField txtDriver = new MyJTextField();
	/** 连接参数 */
	private JLabel lblLinkParameter = new MyJLalel("连接参数",90);
	private JTextField txtLinkParameter = new MyJTextField();
	/** 用户名 */
	private JLabel lblUserName = new MyJLalel("用 户 名",90);
	private JTextField txtUserName = new MyJTextField();
	/** 密码 */
	private JLabel lblPassword = new MyJLalel("密    码",90);
	private JTextField txtPassword = new MyJTextField();
	/** 库名 */
	private JLabel lblDBName = new MyJLalel("数据库名",90);
	private JTextField txtDBName = new MyJTextField();
	/** 解码集 */
	private JLabel lblCharset = new MyJLalel("解 码 集",90);
	private JTextField txtCharset = new MyJTextField();
	
	/** 保存配置 */
	private JButton btnSave = new JButton("保存配置");
	private JButton btnDefault = new JButton("恢复缺省值");
	
	public ConfigPane(Properties prop) {
		cbIsAutoBak.addActionListener(this);
		rbFile.addActionListener(this);
		rbData.addActionListener(this);
		btnDefault.addActionListener(this);
		btnSave.addActionListener(this);
		
		init();
		try {
			getProp(prop);
		} catch (Exception e) {
			System.out.println("错误:"+e.getMessage());
		}
	}
	
	/**
	 * 初始化面板。因为时间关系,可能写的比较戳,望见谅。
	 */
	private void init(){
		
		areaNoJQ.setLineWrap(true);
		JScrollPane sp = new JScrollPane(areaNoJQ);
		sp.setPreferredSize(new Dimension(170,70));
		
		cbIsAutoBak.setPreferredSize(new Dimension(170,20));
		
		ButtonGroup group = new ButtonGroup();
		group.add(rbData);
		group.add(rbFile);
		rbFile.setSelected(true);
		setDataWay(rbData.isSelected());
		rbData.setPreferredSize(new Dimension(85,20));
		rbFile.setPreferredSize(new Dimension(75,20));
		
		
		JPanel paneSet = new JPanel();
		paneSet.setPreferredSize(new Dimension(520, 220));
		paneSet.setLayout(new FlowLayout(FlowLayout.CENTER,10,3));
		paneSet.setBorder(new TitledBorder(new LineBorder(Color.DARK_GRAY)," 服务器设置 "));
		
		paneSet.add(lblPort);
		paneSet.add(txtPort);
		paneSet.add(new MyJLalel("JQ服务器启动服务开启的端口"));
		paneSet.add(lblMinDigit);
		paneSet.add(txtMinDigit);
		paneSet.add(new MyJLalel("生成JQ号最小位数"));
		paneSet.add(lblMaxDigit);
		paneSet.add(txtMaxDigit);
		paneSet.add(new MyJLalel("生成JQ号最大位数"));
		paneSet.add(lblNoJQ);
		paneSet.add(sp);
		paneSet.add(new MyJLalel("要屏蔽的JQ号,用分号[\";\"]分隔"));
		
		paneSet.add(lblIsAutoBak);
		paneSet.add(cbIsAutoBak);
		paneSet.add(new MyJLalel("是否备份日志"));
		paneSet.add(lblDelDay);
		paneSet.add(txtDelDay);
		paneSet.add(new MyJLalel("自动删除多少天前的日志"));
		
		JPanel paneDataWay = new JPanel();
		paneDataWay.setPreferredSize(new Dimension(520, 190));
		paneDataWay.setLayout(new FlowLayout(FlowLayout.CENTER,10,3));
		paneDataWay.setBorder(new TitledBorder(new LineBorder(Color.DARK_GRAY)," 数据存储方式 "));
		
		paneDataWay.add(lblDataWay);
		paneDataWay.add(rbFile);
		paneDataWay.add(rbData);
		paneDataWay.add(new MyJLalel("数据保存采用的方式[数据库未实现]"));
		paneDataWay.add(lblDriver);
		paneDataWay.add(txtDriver);
		paneDataWay.add(new MyJLalel("数据库驱动程序包"));
		paneDataWay.add(lblLinkParameter);
		paneDataWay.add(txtLinkParameter);
		paneDataWay.add(new MyJLalel("数据库驱动程序连接参数"));
		paneDataWay.add(lblUserName);
		paneDataWay.add(txtUserName);
		paneDataWay.add(new MyJLalel("数据库de用户名  "));
		paneDataWay.add(lblPassword);
		paneDataWay.add(txtPassword);
		paneDataWay.add(new MyJLalel("数据库de密码"));
		paneDataWay.add(lblDBName);
		paneDataWay.add(txtDBName);
		paneDataWay.add(new MyJLalel("数据库de库名"));
		paneDataWay.add(lblCharset);
		paneDataWay.add(txtCharset);
		paneDataWay.add(new MyJLalel("连接数据库解码集"));
		
		JPanel paneBtn = new JPanel();
		paneBtn.setPreferredSize(new Dimension(520,30));
		paneBtn.setLayout(new FlowLayout(FlowLayout.RIGHT,50,5));
		paneBtn.add(btnDefault);
		//paneBtn.add(new FillWidth(50,20));
		paneBtn.add(btnSave);
		
		setLayout(new FlowLayout(FlowLayout.CENTER,10,5));
		add(paneSet);
		//add(paneLog);
		add(paneDataWay);
		add(paneBtn);
	}
	
	/**
	 * 保存按钮、回复缺省值按钮等的事件。
	 */
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==cbIsAutoBak){
			txtDelDay.setEditable(cbIsAutoBak.isSelected());
		}
		if(e.getSource()==rbFile)
			setDataWay(false);
		if(e.getSource()==rbData)
			setDataWay(true);
		if(e.getSource()==btnDefault){
			try {
				GetParameter.setDefault();
				getProp(Server.prop);
			} catch (Exception e1) {
				System.out.println("错误:"+e1.getMessage());
			}
			//
		}
		if(e.getSource()==btnSave){
			try {
				setProp();
			} catch (IOException e1) {
				System.out.println("错误:"+e1.getMessage());
			}
		}
	}
	
	private void setDataWay(boolean b){
		txtDriver.setEditable(b);
		txtLinkParameter.setEditable(b);
		txtUserName.setEditable(b);
		txtPassword.setEditable(b);
		txtDBName.setEditable(b);
		txtCharset.setEditable(b);
	}
	
	private class MyJLalel extends JLabel{
		
		public MyJLalel(String text,int width) {
			super(text);
			setHorizontalAlignment(SwingConstants.RIGHT);
			setSize(width,20);
			setPreferredSize(new Dimension(width,20));
		}
		public MyJLalel(String text) {
			super(text);
			setHorizontalAlignment(SwingConstants.LEFT);
			setSize(200,20);
			setPreferredSize(new Dimension(220,20));
		}
	}
	
	private class MyJTextField extends JTextField{
		public MyJTextField() {
			this(170);
		}
		public MyJTextField(int width) {
			super();
			setSize(width,20);
			setPreferredSize(new Dimension(width,20));
		}
	}
	
	/**
	 * 获取系统的配置文件
	 * @param prop 配置文件映射成Properties对象。
	 * @throws Exception
	 */
	public void getProp(Properties prop) throws Exception{
			
			int len = GetParameter.keys.length;
			String[] values = new String[len]; 
			for(int i=0;i<len;i++)
				values[i] = prop.getProperty(GetParameter.keys[i]);
			txtPort.setText(values[0]);
			txtMinDigit.setText(values[1]);
			txtMaxDigit.setText(values[2]);
			areaNoJQ.setText(values[3]);
			int isAutoBak = Integer.parseInt(values[4]);
			if(isAutoBak==1)
				cbIsAutoBak.setSelected(true);
			else
				cbIsAutoBak.setSelected(false);
			txtDelDay.setText(values[5]);
			txtDelDay.setEditable(cbIsAutoBak.isSelected());
			
			int dataWay = Integer.parseInt(values[6]);
			if(dataWay==0)
				rbFile.setSelected(true);
			
			txtDriver.setText(values[7]);
			txtLinkParameter.setText(values[8]);
			txtUserName.setText(values[9]);
			txtPassword.setText(values[10]);
			txtDBName.setText(values[11]);
			txtCharset.setText(values[12]);
			setDataWay(rbData.isSelected());
	}
	
	/**
	 * 保存配置文件。
	 * @throws IOException
	 */
	public void setProp() throws IOException{
		String values[] = {
				txtPort.getText(),txtMinDigit.getText(),txtMaxDigit.getText(),areaNoJQ.getText(),
				cbIsAutoBak.isSelected()?"1":"0",txtDelDay.getText(),rbFile.isSelected()?"0":"1",
				txtDriver.getText(),txtLinkParameter.getText(),txtUserName.getText(),txtPassword.getText(),txtDBName.getText(),txtCharset.getText()};
		GetParameter.saveProp(GetParameter.keys, values);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -