[問題] 請教更有效率的方法

看板java作者 (siri)時間17年前 (2008/04/12 11:09), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
最近開始學到GUI還有event handling 試做一個簡單的例子是要在frame裡面放置一個按鈕 按鈕旁邊有一行文字會反應按鈕總共被按了幾次 我寫了兩個file:CountTracker.java跟ButtonTester.java code如下 public class CountTracker{ private int count; public CountTracker(){ count = 0; } public void setCount(int aCount){ count = aCount; } public int getCount(){ return count; } } import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JLabel; public class ButtonTester{ public static void main(String arg[]){ JFrame frame = new JFrame(); JButton button = new JButton("Click me!"); final CountTracker initialCount = new CountTracker(); final JLabel label = new JLabel("I was clicked 0 time."); JPanel panel = new JPanel(); panel.add(label); panel.add(button); frame.add(panel); class ClickListener implements ActionListener{ public void actionPerformed(ActionEvent event){ int count = initialCount.getCount()+1; initialCount.setCount(count); label.setText("I was clicked " + count + " times."); }// end actionPerformed method }//end inner class ActionListener listener = new ClickListener(); button.addActionListener(listener); frame.setSize(400,400); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }//end main method }//end class ButtonTester 這裡運用到書裡面教的inner class的觀念 本來最剛開始試做這個例子 是沒有想到還要另外寫CountTracker這個class 可是寫到inner class裡面的code的時候 就遭遇到問題了 本來的想法是在inner class外先宣告一個final int count; (為了要讓count這個variable能夠在inner class使用所以要宣告成final) 然後當然就是很直覺的在inner class裡面count++ 可是也很自然的產生錯誤 因為宣告final之後是不能再改變那個variable的值 雖然我寫的code是能夠成功的跑出該有的功能 可是我在想會不會有更有效率的方法是不用兩個class就能夠達成的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 160.39.89.42

04/12 11:29, , 1F
不用兩個 class 的方法很多,像是把 count 放到 ButtonTester
04/12 11:29, 1F

04/12 12:05, , 2F
我知道是把count寫到ButtonTester裡面 可是不曉得怎麼寫咧 ><
04/12 12:05, 2F

04/12 16:24, , 3F
static
04/12 16:24, 3F
文章代碼(AID): #1802Vhc3 (java)