[英]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.