簡體   English   中英

如何將值從按鈕傳遞到另一個類

[英]How to pass a value from a button to another class

場景:我有一系列的jbutton(在運行時創建),每個jbutton的標簽中都有一個數字。 使用以下代碼創建按鈕:

    for (int i = 1; i <= tablesNumber; i++) {
        JButton button = new JButton(Integer.toString(i));
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                new Orders().setVisible(true);
            }
        });
        jPanel1.add(button);
    }

我需要將觸發事件的按鈕的編號傳遞給Orders類,例如,如果用戶單擊5號按鈕,則需要將5值傳遞給Orders。 我怎樣才能做到這一點? 謝謝。

根據您的問題:

傳遞給類Orders觸發事件的按鈕的編號

您可以捕獲循環迭代變量i以便可以在匿名事件處理程序中使用它。 為了論證,我假設您想將數字傳遞給構造函數,但是您可以隨意使用它:

for (int i = 1; i <= tablesNumber; i++) {
    final int t = i; // <-- NEW LINE HERE
    JButton button = new JButton(Integer.toString(i));
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            new Orders(t).setVisible(true); // <-- USE t here however you need to
        }
    });
    jPanel1.add(button);
}

沒有final int t = i您可能會收到編譯器錯誤“無法在用不同方法定義的內部類中引用非最終變量i”。 這是因為捕獲變量(即,在匿名類的方法內部使用的來自外部作用域的變量必須是final變量(或有效地是final變量-從SE 8開始,此行為已稍有更改))。

暫無
暫無

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

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