[問題] 請教更有效率的方法
最近開始學到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
04/12 11:29, 1F
→
04/12 12:05, , 2F
04/12 12:05, 2F
推
04/12 16:24, , 3F
04/12 16:24, 3F