簡體   English   中英

Java-單擊按鈕時更改標簽文本

[英]Java - Change label text when button is clicked

我有一個我無法解決的問題。

我要這個:

當我打開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;
        }

    }
}

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

您可以將(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));
    }
}

希望這可以幫助!

添加numero.setText(num + ""); 在您的聽眾里面。

編輯:將JLabel numero聲明為類變量,它將起作用。

您需要在ActionPreformed方法內部有效地調用numero.setText(num)。 我建議也許添加一條與此類似的檢查語句。

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

我看到的另一個問題是,您可能無法知道numero或sendButton的值。 隨便可以在主類中將它們設為公共變量,也可以將它們作為參數傳遞。

要獲得隨機數,可以使用Math.random(); 並乘以10,然后加1。 (然后在1到10之間)。要設置按鈕文字,請使用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM