2011-07-21 232 views
0
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class TestSwingListeners1 { 

    private static int cnt1; 
    private static int cnt2; 
    public static void main(String[] args) { 
    JFrame fr1 = new JFrame("Swing Window"); 
    Container cp; 
    JButton bt1; 
    JButton bt2; 
    cnt1 = 0; 
    cnt2 = 0; 
    String scr = null; 
    String wnr = null; 
    JButton btOK, btCancel; 
    fr1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    fr1.setSize(300, 200); 
    fr1.setResizable(false); 
    cp = fr1.getContentPane(); 
    cp.setLayout(new GridLayout(5,1)); 
    btOK = new JButton("AC Milan"); 
    btCancel = new JButton("Real Madrid"); 
    JLabel lbl1 = new JLabel("Result: " + cnt1 + "X" + cnt2); 
    JLabel lbl2 = new JLabel("Last Scorer: " + scr); 
    JLabel lbl3 = new JLabel("Winner: " + wnr); 
    cp.add(btOK); 
    cp.add(btCancel); 
    cp.add(lbl1); 
    cp.add(lbl2); 
    cp.add(lbl3); 
    //lbl1.setText(displayText); 

    btOK.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent ae) { 
     //String displayText = "" + 1; 
     cnt1++;  
     } 
    }); 

    btCancel.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent ae) { 
     cnt2++; 
     } 
    }); 
    fr1.show(); 
} 

當我按下按鈕btOK,我想cnt1遞增,並與btCancel相同 - 增量cnt2當它按下。更新變量內標籤

怎麼辦?

回答

1
public class TestSwingListeners1 implements ActionListener 
{ 

    // ... 

    btOK = new JButton("AC Milan"); 
    btOK.setActionCommand("OK"); 
    btOKaddActionListener(this); 

    btCancel = new JButton("Real Madrid"); 
    btCancel.setActionCommand("Cancel"); 
    btCancel.addActionListener(this); 

    // ... 

    public void actionPerformed(ActionEvent e) 
    { 
     if(e.getActionCommand().equals("OK")) 
     { 
      lbl1.setText("Result: " + ++cnt1 + "X" + cnt2); 
     } 
     else if(e.getActionCommand().equals("Cancel")) 
     { 
      lbl1.setText("Result: " + cnt1 + "X" + ++cnt2); 
     } 
    } 
} 
+0

+1'皇家馬德里' –

+0

@你應該介意的downvoter告訴我爲什麼downvoting? –

+0

AC米蘭+1 – mKorbel

2

你需要使用.setText()要更新的標籤:

btOK.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent ae) { 
     cnt1++; 
     lbl1.setText("Result: " + cnt1 + " X " + cnt2); 
    } 
} 

而且你需要更改:

JLabel lbl1 = new JLabel("Result: " + cnt1 + "X" + cnt2); 

final JLabel lbl1 = new JLabel("Result: " + cnt1 + "X" + cnt2); 

,使其成爲您的ActionListener訪問該是內心階層。

+0

,我應該這樣做嗎? – Haroyee

+0

它告訴我: 局部變量lbl1是從內部類訪問的;需要申報最後 – Haroyee

+0

謝謝各位先生,還有一個問題, 關於更新這些字符串(scr)爲最後一個得分手和贏家如何更新它們? – Haroyee

2

您需要註冊ActionListenerRead More

+0

嘿夥計, 我嘗試了GridLayout(5,0),但它仍然在左邊,怎麼做才能使它在中心? – Haroyee

+0

那是另一個問題 –

+0

那該怎麼辦>>! – Haroyee