2011-07-21 138 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