Re: [問題] 關於程式寫法的疑問
※ 引述《poopoo888888 (阿川)》之銘言:
: 標題: [問題] 關於程式寫法的疑問
: 時間: Mon Feb 7 10:55:18 2011
:
: 大家好 小弟最近在看書自學JAVA
:
: 想練習寫一個有GUI的記帳小軟體來練功夫
:
:
:
: 這個軟體是這樣的:
:
: 執行之後 會顯示一個視窗A 裡頭有「款項」跟「金額」
:
: 下方則有一個按鈕寫著「新增」
:
: 點了新增之後 會跳出另一個視窗B
:
: B可以輸入款項與金額 下方有一個按鈕寫著「儲存」
:
: 按下儲存之後 視窗B會關閉 而視窗A會新增一筆款項與金額
:
:
:
: 關於這A、B這兩個視窗 我有想到幾種寫法 不知道哪種比較正確?
:
: 1、A跟B屬於同一個clas
:
: 2、A跟B屬於不同的class 但屬於同一個thread
:
: 3、A跟B屬於不同的class 但屬於不同thread
:
:
: 我本來是試著用3的寫法 後來發現好像沒必要使用多執行緒
:
: 於是改用2的寫法 又發現屬於不同class的話
:
: 為了共用一些資料 需要傳來傳去很麻煩
:
: 所以我想應該用1的寫法最棒?
:
:
:
: 不知道我的觀念是否正確
:
: 請教各位大大 謝謝!
:
: --
小弟最後解決這個問題了 但又衍生一些問題想請教各位大大
我把創造視窗B的過程 寫在A視窗「新增」按鈕的actionPerformed內
它大概長這樣
class NewButtonActionListener implements ActionListener{
JDialog dialog;
JTextField text1;
JTextField text2;
JTextArea text3;
public void actionPerformed(ActionEvent event){
dialog = new JDialog(frame, "新增款項");
JPanel mainPanel = new JPanel();
//省略其餘步驟
而視窗B的「儲存」按鈕也需要一個的inncer class
也就是說 NewButtonActionListener這個inner class還有一個更內層的class
它大概長這樣
class SaveButtonActionListener implements ActionListener{
public void actionPerformed(ActionEvent event){
//創造一筆新帳款account
accountList.add(account);
dialog.setVisible(false);
refresh();
}
}//end inner's inner class
其中的refresh則是主程式的一個函數 用來更新視窗A
它大概長這樣
public void refresh(){
//取出accountList內最新的一筆account
//接著將它更新道主frame上面
frame.validate();
}
雖然我完成了我想做的事情
但有幾個問題想請教各位大大
1、我使用frame.validate();來更新frame的畫面
這是更新畫面的正確做法嗎?
2、視窗B是個dialog 我使用dialog.setVisible(false);來關閉視窗B
這是關閉視窗的正確作法嗎?
3、我沒替視窗B的創造過程另寫一個class
而是整個寫在actionPerformed內 這會不會很違背JAVA的物件導向精神?
4、我在inner class內又寫了一個inner class
這種inner class又有inner class的狀況正常嗎?
我這樣的寫法是否太投機取巧?
歹勢 新手上路問題特別多
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.166.197.37
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
問題
1
7