作者poopoo888888 (阿川)
看板java
标题Re: [问题] 关於程式写法的疑问
时间Tue Feb 8 09:57:25 2011
※ 引述《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