你的這段代碼是獲取配置文件中數(shù)據(jù)庫(kù)配置信息
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),汕頭企業(yè)網(wǎng)站建設(shè),汕頭品牌網(wǎng)站建設(shè),網(wǎng)站定制,汕頭網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,汕頭網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
配置內(nèi)容都在DBConfig.txt 這個(gè)文件中了
package dda;
import java.sql.*;
import java.io.LineNumberReader;
import java.io.FileReader;
import java.util.StringTokenizer;
/**
*
* 讀取配置文件DBConfig.txt中的配置信息
* @author xxx
* @version 1.0
*/
public class DbConnection {
Connection conn = null;
ResultSet rs = null;
boolean b;
public DbConnection() {
this.b = false;
this.getDBConfig();
}
/* 定義變量 */
String strSeparate = " ";
String strFileName = "DBConfig.txt";
String strUserID = null;
String strUserPWD = null;
String strDB = null;
public void getDBConfig() {
this.getDBConfig();
try {
LineNumberReader oLineNumberReader = new LineNumberReader(
new FileReader(this.strFileName)); // 從 DBConfig.txt 文件中讀取數(shù)據(jù)庫(kù)配置
String strLine = null;
while ((strLine = oLineNumberReader.readLine()) != null) {// 遍歷配置文件中每一行數(shù)據(jù)
StringTokenizer token = new StringTokenizer(strLine,(new String(this.strSeparate).toString())); // 按空格拆分配置內(nèi)容
/* 以下三行都是給屬性設(shè)值,獲取配置屬性 */
this.strDB = token.nextToken();
this.strUserID = token.nextToken();
this.strUserPWD = token.nextToken();
}
} catch (Exception e) {
System.out.println("DB:"+strFileName);
}
}
}
學(xué)會(huì)在idea(eclipse)中閱讀、調(diào)試源碼,是java程序員必不可少的一項(xiàng)技能。
在idea中配完環(huán)境后,默認(rèn)其實(shí)也是能夠?qū)dk的源碼進(jìn)行debug調(diào)試的。但是無(wú)法在源碼中添加自己的注釋,無(wú)法添加自己的理解。如果干瞪眼看的話,可能過(guò)段時(shí)間,就忘記了。下面就介紹下,如何在jdk源碼中為所欲為,像在我們自己的代碼中一樣寫(xiě)注釋、調(diào)代碼:
打開(kāi)idea,選擇Project-File-Project Structure-SDKs-Sourcepath,初始狀態(tài)如下圖 :
打開(kāi)本地jdk安裝路徑,本處為E:\java\jdk8,將此路徑下的src.zip壓縮包解壓到自定義的指定文件夾(可以在電腦磁盤任意位置),本處解壓到同目錄的jdk_source文件夾下,如下圖:
繼續(xù)在步驟1中的設(shè)置頁(yè)面中操作,將E:\java\jdk8\src.zip通過(guò)右側(cè)的減號(hào)將其移除;并通過(guò)右側(cè)的加號(hào),將解壓文件夾E:\java\jdk8\jdk_source導(dǎo)入進(jìn)來(lái);點(diǎn)擊apply,再點(diǎn)擊OK。導(dǎo)入結(jié)果見(jiàn)下圖:
這時(shí),再重新打開(kāi)jdk的源碼類,我們就可以在源java文件中,添加自己的注釋了。
一定注意:添加注釋時(shí),一定不要新加一行寫(xiě)注釋。最好在一行代碼的后面,使用//進(jìn)行注釋。否則行號(hào)和真正的jre中編譯后的代碼行號(hào)對(duì)應(yīng)不上,如果對(duì)源碼debug時(shí),會(huì)出現(xiàn)代碼運(yùn)行和行號(hào)不匹配的情況
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class GameTest extends JFrame implements ActionListener{
/*
* 新建一個(gè)主面板(這個(gè)類可能是自定義的,本程序和API中沒(méi)有)。
*/
MainPanel j=new MainPanel();
JButton jPreview;
JLabel label;
Container container;
JPanel panel;
/**
* 主函數(shù)
* @param args
*/
public static void main(String[] args) {
//運(yùn)行程序
new GameTest();
}
/**
* 構(gòu)造函數(shù)。
*
*/
public GameTest()
{
//新建一個(gè)標(biāo)題為“拼圖”的窗口
JFrame fr =new JFrame("拼圖");
//獲取窗口容器。
container=fr.getContentPane();
//創(chuàng)建菜單條
JMenuBar jMenuBar=new JMenuBar();
//以下初始化菜單,并且設(shè)置快捷鍵和添加監(jiān)聽(tīng)器。
JMenu jMenuGame=new JMenu("游戲(G)");
jMenuGame.setMnemonic('g');
JMenuItem jMenuItemStart = new JMenuItem("開(kāi)始(S)");
jMenuItemStart.setMnemonic('s');
jMenuItemStart.addActionListener(this);
JMenuItem jMenuItemExit=new JMenuItem("退出(E)");
jMenuItemExit.setMnemonic('e');
jMenuItemExit.addActionListener(this);
jMenuGame.add(jMenuItemStart);
jMenuGame.add(jMenuItemExit);
//初始化按鈕并設(shè)置快捷鍵和添加監(jiān)聽(tīng)器
JButton jChoice=new JButton("選圖(X)");
jChoice.setMnemonic('x');
jChoice.addActionListener(this);
jPreview=new JButton("預(yù)覽(P)");
jPreview.setMnemonic('p');
jPreview.addActionListener(this);
//將菜單和按鈕添加到菜單條中
jMenuBar.add(jMenuGame);
jMenuBar.add(jChoice);
jMenuBar.add(jPreview);
//將菜單條設(shè)為該窗口的主菜單
fr.setJMenuBar(jMenuBar);
//將主面板添加到該窗口的容器中。
container.add(j);
//設(shè)置大小
fr.setSize(315,360 );
fr.setVisible(true);
//設(shè)置默認(rèn)關(guān)閉方式。
fr.setDefaultCloseOperation(3);
}
/**
* 事件處理函數(shù)。
*/
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="開(kāi)始(S)")
{
j.Start();
}
if(e.getActionCommand()=="預(yù)覽(P)")
{
j.setVisible(false);
panel=new JPanel();
Icon icon=new ImageIcon("pictrue/pic"+"_"+MainPanel.pictureID+".jpg");
label=new JLabel(icon);
label.setBounds(300, 300, 0, 0);
panel.add(label);
panel.setSize(300, 300);
panel.setVisible(true);
this.container.add(panel);
jPreview.setText("返回(P)");
}
if(e.getActionCommand()=="返回(P)")
{
panel.setVisible(false);
j.setVisible(true);
j.repaint();
jPreview.setText("預(yù)覽(P)");
}
if(e.getActionCommand()=="退出(E)")
{
System.exit(0);
}
if(e.getActionCommand()=="選圖(X)")
{
//初始化選擇框,并提供選擇。
Choice pic = new Choice();
pic.add("七里香");
pic.add("依然范特西");
pic.add("八度空間");
pic.add("十一月的肖邦");
pic.add("魔杰座");
pic.add("葉惠美");
pic.add("我很忙");
int i=JOptionPane.showConfirmDialog(this, pic, "選擇圖片", JOptionPane.OK_CANCEL_OPTION);
if(i==JOptionPane.YES_OPTION)
{
//選擇圖片
MainPanel.pictureID=pic.getSelectedIndex()+1;
j.removeAll();
j.reLoadPicture();
j.repaint();
}
}
}
}