輔助功能模塊FTP站點管理實現方法
本文介紹了Java語言實現簡單FTP軟,輔助功能模塊FTP站點管理的實現方法,具有一定的參考價值,感興趣的小夥伴們可以參考一下。想了解更多相關信息請持續關注我們應屆畢業生考試網!
1、FTP站點管理
點擊“FTP站點管理”按鈕,彈出對話框“FTP站點管理”,如下圖
1) 連接站點
在FTP站點管理面板上選好要連接的站點,點擊“連接”按鈕,則會將主機地址、端口號、用户名好,並將密碼清空,如下圖
到其主要代碼如下
if (ls("link")) { // 如果單擊的是連接按鈕
inkInfo(bean); // 調用setLinkInfo()方法
dispose(); // 關閉FTP站點管理對話框
}
其中調用的是lientFrame的setLinkInfo(SiteInfoBean bean)方法,其代碼如下
/**
* 設置FTP連接信息的方法,由FTP站點管理器調用
*/
ublic void setLinkInfo(SiteInfoBean bean) {
ext(erver()); // 設置主機地址
ext(ort() + ""); // 設置端口號
ext(serName()); // 設置用户名
ext(""); // 密碼清空
estFocus(); // 密碼框請求焦點
2) 添加站點
在FTP站點管理面板上點擊“添加”按鈕,會產生一個新的對話框“添加FTP站點”,如下圖
填寫好站點名稱、地址、端口號、登陸用户後點擊”確定”或者”重置”按鈕會觸發Dialog類的actionPerformed(ActionEvent e)方法,其代碼如下
/**
* 界面按鈕的事件處理方法
*/
@Override
public void actionPerformed(ActionEvent e) {
String command = ctionCommand(); // 獲取按鈕的command屬性
if (ls("ok")) { // 如果是確定按鈕
try {
if (dialog == null) {
dispose();
return;
}
// 獲取界面所有文本框的內容
String siteName = ext()();
String server = ext()();
String userName = ext()();
String portStr = porext()();
// 判斷是否填寫了全部文本框
if (pty() || pty()
|| pty() || pty()) {
MessageDialog(this, "請填寫全部信息");
return;
}
int port = eOf(portStr);
// 創建FTP站點信息的JavaBean對象
SiteInfoBean bean = new SiteInfoBean(siteName, server, port,
userName);
// 如果對話框的siteBean不為空
if (siteBean != null)
d(d()); // 設置FTP站點的ID編號
ite(bean); // 調用父窗體的 addSite方法添加站點
SiteList(); // 調用父窗體的loadSiteList方法重載站點列表
dispose();
} catch (NullPointerException ex) {
tStackTrace();
return;
} catch (NumberFormatException ex) {
MessageDialog(this, "請正確填寫端口號信息");
tStackTrace();
return;
}
}
if (ls("cancel")) { // 如果是重置按鈕
if (siteBean == null) // 如果對話框的siteBean屬性為空
clearInput(); // 調用清除文本框內容的方法
else
// 否則
initInput(); // 初始化界面文本框內容
}
}
3) 編輯站點
在FTP站點管理面板上選好要編輯的站點,點擊“編輯”按鈕,會產生一個新的對話框“編輯FTP站點”,如下圖
編輯寫好站點名稱、地址、端口號、登陸用户後點擊”確定”或者”重置”按鈕觸發Dialog類的actionPerformed(ActionEvent e)方法,其代碼如添加站點裏一樣。
4) 刪除站點
在FTP站點管理面板上選好要刪除的站點,點擊“刪除”按鈕,調用delSite(SiteInfoBean bean)方法,其代碼如下
/**
* 刪除FTP站點的方法
*/
public void delSite(SiteInfoBean bean) {
// 從站點屬性集合對象中移除指定ID編號的站點屬性
ve(d());
try {
// 獲取站點屬性文件的輸出流
FileOutputStream out = new FileOutputStream(FILE);
e(out, "FTP站點數據"); // 調用store方法存儲站點屬性
loadSiteList(); // 重新裝載站點列表
} catch (FileNotFoundException e) {
tStackTrace();
} catch (IOException e) {
tStackTrace();
}
}
2、上傳/下載任務結束後自動關機
在ePanel類的'refreshQueue()方法裏會判斷任務隊列是否為空以及自動關機按鈕是否被按下,如果滿足條件則執行系統關機命令,延遲30秒後自動關機。其代碼如下
/**
* 刷新隊列的方法
*/
private synchronized void refreshQueue() {
// 如果自動關機按鈕被按下並且上傳和下載的隊列都有任務
if (hutdownButton()lected() && pty()
&& pty()) {
try {
// 執行系統關機命令,延遲30秒鐘
untime()("shutdown -s -t 30");
} catch (IOException e) {
tStackTrace();
}
}
// 創建表格的數據模型對象
DefaultTableModel model = new DefaultTableModel(columns, 0);
// 獲取本地上傳隊列中的任務
Object[] localQueueArray = ray();
// 遍歷本地上傳任務
for (int i = 0; i < th; i++) {
Object[] queueValue = (Object[]) localQueueArray[i];
if (queueValue == null)
continue;
File localFile = (File) queueValue[0];
// 把上傳隊列的任務添加到表格組件的數據模型中
ow(new Object[] { bsoluteFile(), "上傳",erver(), i == 0 ? "正在上傳" : "等待上傳" });
}
// 獲取下載隊列的任務
Object[] ftpQueueArray = ray();
// 遍歷下載隊列
for (int i = 0; i < th; i++) {
Object[] queueValue = (Object[]) ftpQueueArray[i];
if (queueValue == null)
continue;
FtpFile ftpFile = (FtpFile) queueValue[0];
// 把下載隊列的任務添加到表格組件的數據模型中
ow(new Object[] { bsolutePath(), "下載",
erver(), i == 0 ? "正在下載" : "等待下載" });
}
odel(model); // 設置表格使用本方法的表格數據模型
}
3、軟件系統化托盤
當點擊最小化軟件後,系統就會變成一個生成系統推盤,點擊系統托盤右鍵會有“顯示主窗體”和“退出”兩個菜單,如下圖
以下是初始化系統托盤的代碼,如下
/**
* 初始化系統托盤的方法
*/
private void initSystemTray() {
if (pported())
systemTray = ystemTray();
TrayIcon trayIcon = new TrayIcon(mage());
PopupMenu popupMenu = new PopupMenu("托盤菜單");
// 創建顯示主窗體菜單項
MenuItem showMenuItem = new MenuItem("顯示主窗體");
ctionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
xtendedState(AL);
isible(true);
}
});
// 創建退出菜單項
MenuItem exitMenuItem = new MenuItem("退出");
ctionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
(0);
}
});
(showMenuItem);
eparator();
(exitMenuItem);
opupMenu(popupMenu);
try {
(trayIcon);
} catch (AWTException e) {
tStackTrace();
}
}
-
java日期時間基本操作方法
1.獲得Calendar實例:Calendarc=nstance();2.定義日期/時間的格式:SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");3.把日期/時間轉換成固定格式,使用SimpleDateFormat的'format()方法:Stringdatetime=at(ime());4.把字符串轉換成日期/時間,...
-
Java運算符
計算機的最基本用途之一就是執行數學運算,作為一門計算機語言,Java也提供了一套豐富的運算符來操縱變量。歡迎大家閲讀!更多相關信息請關注相關欄目!Java中的運算符和C/C++相差無幾。數學運算符數學運算,結果為一個數值。見下表:關係運算符關係運算符,結果為一個布爾...
-
java中String和StringBuffer的區別
java中String和StringBuffer的區別String這個類是Java中使用得最頻繁的類之一,以下就是小編精心推薦java中String和StringBuffer的區別,希望對大家有幫助!看到這個講解的不錯,所以轉一下在java中有3個類來負責字符的操作。acter是進行單個字符操作的,ng對一串字符...
-
java的基礎語法教學
java的基礎語法教學前言學習完了第一個java程序,之後就來系統的學習java。先從基礎語法開始,這個語法你也可以理解為英語或是漢語裏面的語法,只不過大家各有各的特點和區別。學習編程其實也是一個編程語言的學習過程。我們在學習英語的.時候都説,要想學習好英語一...