2015-11-09 50 views
1

我有一個問題,我無法解決。Java - 單擊按鈕時更改標籤文本

我想這一點:

當我打開GUI時,我會顯示一個隨機數和一個按鈕,上面寫着「更改號碼」。

然後,當按鈕被點擊時,我希望先前的隨機數變成另一個隨機數,依此類推。

這是我的代碼:

public class RandomDisplayPanel extends JPanel { 




    public RandomDisplayPanel() { 

    JPanel panel = new JPanel(); 
    add(panel); 
    JPanel inside = new JPanel(); 
    panel.setBackground(Color.yellow); 


    JButton sendButton = new JButton("Send"); 

    Random generator = new Random(); 
    int num; 
    num = generator.nextInt(100) +1; 
    JLabel numero = new JLabel("" + num); 


    inside.add(numero); 
    inside.add(sendButton); 
    panel.add(inside); 


    sendButton.addActionListener(new RandomDisplayPanel.RandomListener()); 
} 

private class RandomListener implements ActionListener { 


     @Override 
     public void actionPerformed(ActionEvent e) { 

      Random generator = new Random(); 

      int num; 
      num = generator.nextInt(100) +1; 
     } 

    } 
} 

我怎樣才能做到這一點?預先感謝您:)

+0

我還沒有做過GUI在一段時間,但我認爲你只需要添加'numero.setText(NUM);'在按鈕點擊部分 –

回答

0

在您的監聽器中添加numero.setText(num + "");

編輯:聲明JLabel numero作爲類變量,它會工作。

+2

我認爲在聽衆裏面不會知道數字... – ParkerHalo

+0

aaah我明白了。沒有注意到 –

+1

@MuratK。它不會,因爲它不是一個實例變量。 – BackSlash

0

您需要在ActionPreformed方法內有效地調用numero.setText(num)。我建議也許增加一個類似的檢查聲明..

if(e.getSource() == sendButton) { 
    numero.setText(num); 
} 

還有一個問題,我看到的,是,你可能無法知道NUMERO或sendButton的值。 Offhand你可以在你的主類中使它們成爲公共變量,或者你可以將它們作爲參數傳遞。

2

您可以將(JLabel的)號碼傳遞給聽者如下:

sendButton.addActionListener(new RandomDisplayPanel.RandomListener(number)); 

private class RandomListener implements ActionListener { 
    private JLabel target; 
    public RandomListener(JLabel target) { 
     this.target = target;  
    } 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     Random generator = new Random(); 

     int num; 
     num = generator.nextInt(100) +1; 
     this.target.setText(String.valueOf(num)); 
    } 
} 

希望這有助於!

0

要得到一個隨機數,您可以使用Math.random();並將其乘以10並將其加1。 (然後是1和10之間) 要設置按鈕上的文字,然後用

Button myButton=(Button)this.findViewById(R.id.yourButtonsID); 
    myButton.setText(yourRandomNumber);