自行改装jbuilder-part(编辑修改稿)内容摘要:

tor,不就結了。 拿到 this 之後,還有看不到的資訊嗎。 一視同仁,順便把HelloWorldFrame_btnExit_actionAdapter 也調整一下: 程式列表: import .*。 import .*。 import .*。 public class HelloWorldFrame extends JFrame { JButton btnHello = new JButton(Hello)。 JButton btnExit = new JButton(Exit)。 JLabel lblMessage = new JLabel( )。 public HelloWorldFrame() { JPanel contentPane = (JPanel) getContentPane()。 (btnHello, )。 (lblMessage, )。 (btnExit, )。 ( new HelloWorldFrame_btnHello_actionAdapter(this))。 ( new HelloWorldFrame_btnExit_actionAdapter(this))。 setDefaultCloseOperation()。 setLocation(100, 100)。 setSize(400, 300)。 setVisible(true)。 } public static void main(String[] args) { HelloWorldFrame hwFrame = new HelloWorldFrame()。 } } class HelloWorldFrame_btnHello_actionAdapter implements ActionListener { private HelloWorldFrame adaptee。 public HelloWorldFrame_btnHello_actionAdapter(HelloWorldFrame adaptee) { = adaptee。 } public void actionPerformed(ActionEvent e) { (Hello World)。 } } class HelloWorldFrame_btnExit_actionAdapter implements ActionListener { private HelloWorldFrame adaptee。 public HelloWorldFrame_btnExit_actionAdapter(HelloWorldFrame adaptee) { = adaptee。 } public void actionPerformed(ActionEvent e) { (0)。 } } 看起來似乎不錯,不過 HelloWorldFrame_btnHello_actionAdapter 的actionPerformed()方法裡面可能會出現一堆 HelloWorldFrame 定義的欄位,這樣似乎知道人家家裡太多秘密了,感覺上不太好,耦合度還是太高。 有沒有辦法可以讓這兩個類別之間保持一定的神秘感,但是又可以完成該做的事。 有了。 把 btnHello的企業邏輯 btnHello_actionPerformed()寫在 HelloWorldFrame裡頭,因為 btnHello會用到的資訊都放在 HelloWorldFrame 裡頭,這樣最方便不過。 然後呢, HelloWorldFrame_btnHello_actionAdapter 拐個彎 用 adaptee (也就是this)回 呼 btnHello_actionPerformed(),不就好了。 順便也把 btnExit改一改: 程式列表: import .*。 import .*。 import .*。 public class HelloWorldFrame extends JFrame { JButton btnHello = new JButton(Hello)。 JButton btnExit = new JButton(Exit)。 JLabel lblMessage = new JLabel( )。 public HelloWorldFrame() { JPanel contentPane = (JPanel) getContentPane()。 (btnHello, )。 (lblMessage, )。 (btnExit, )。 ( new HelloWorldFrame_btnHello_actionAdapter(this))。 ( new HelloWorldFrame_btnExit_actionAdapter(this))。 setDefaultCloseOperation()。 setLocation(100, 100)。 setSize(400, 300)。 setVisible(true)。 } public void btnHello_actionPerformed(ActionEvent e) { (Hello World)。 } public void btnExit_actionPerformed(ActionEvent e) { (0)。 } public static void main(String[] args) { HelloWorldFrame hwFrame = new HelloWorldFrame()。 } } class HelloWorldFrame_btnHello_actionAdapter implements ActionListener { private HelloWorldFrame adaptee。 public HelloWorldFrame_btnHello_actionAdapter(HelloWorldFrame adaptee) { = adaptee。 } public void actionPerformed(ActionEvent e) { (e)。 } } class HelloWorldFrame_btnExit_actionAdapter implements ActionListener { private HelloWorldFrame adaptee。 public HelloWorldFrame_btnExit_actionAdapter(HelloWorldFrame adaptee) { = adaptee。 } public void actionPerformed(ActionEvent e) { (e)。 } } 這麼一來,雙方面唯一需要知道的,就只剩下類別名稱與企業邏輯 名稱 而已。 Adapter 在哪裡 就是 HelloWorldFrame_btnHello_actionAdapter 與HelloWorldFrame_btnExit_actionAdapter 這兩個類別。 你有沒有注意到,HelloWorldFrame漸漸變得跟原來還不知 Event Delegation Model為何物時很像。 感覺上是不是很像我們有一個既有類別 HelloWorldFrame,為了融入到 Event Delegation Model 之中,我們就弄了 HelloWorldFrame_btnHello_actionAdapter 與HelloWorldFrame_btnExit_actionAdapter 這兩個變壓器, 讓它們去實作ActionListener 介面,然後拐個彎,分別在 actionPerformed()方法之中呼叫既有類別 定義好的企業邏輯。 舊版的 JDK 這個程式看來似乎還不錯,可是交貨的時候老闆還是不滿意,因為不能在舊版的JDK裡頭執行。 Why。 原因就 在底下這一行; setDefaultCloseOperation()。 怎麼辦。 為了盡可能讓老闆多賣幾份程式,我只好用保險一點的寫法,改寫WindowListener 的 windowClosing()方法: 程式列表: import .*。 import .*。 import .*。 public class HelloWorldFrame extends JFrame { JButton btnHello = new JButton(Hello)。 JButton btnExit = new JButton(Exit)。 JLabel lblMessage = new JLabel( )。 public HelloWorldFrame() { JPanel contentPane = (JPanel) getContentPane()。 (btnHello, )。 (lblMessage, )。 (btnExit, )。 ( new HelloWorldFrame_btnHello_actionAdapter(this))。 ( new HelloWorldFrame_btnExit_actionAdapter(this))。 (new HelloWorldFrame_this_windowAdapter(this))。 setLocation(100, 100)。 setSize(400, 300)。 setVisible(true)。 } public void btnHello_actionPerformed(ActionEvent e) { (Hello World)。 } public void btnExit_actionPerformed(ActionEvent e) { (0)。 } public void this_windowClosing(WindowEvent e) { (0)。 } public static void main(String[] args) { HelloWorldFrame hwFrame = new HelloWorldFrame()。 } } class HelloWorldFrame_btnHello_actionAdapter implements ActionListener { private HelloWorldFrame adaptee。 public HelloWorldFrame_btnHello_actionAdapter(HelloWorldFrame adaptee) { = adaptee。 } public void actionPerformed(ActionEvent e) { (e)。 } } class HelloWorldFrame_btnExit_actionAdapter implements ActionListener { private HelloWorldFrame adaptee。 public HelloWorldFrame_btnExit_actionAdapter(HelloWorldF。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。