2015-12-18 59 views
1

我正在製作歐洲最高山脈的地圖,並且想要創建一個for循環,爲我製作按鈕的動作。在Java中使用for循環創建按鈕

我目前停留在這個代碼:

String Text = "btn" + i; 
     Text.addSelectionListener(new SelectionAdapter() 

我想補充:

btn1.addSelectionListener(new SelectionAdapter() 

btn2.addSelectionListener(new SelectionAdapter() 

btn3.addSelectionListener(new SelectionAdapter() 

btn4..... 

for循環運行時。 有誰知道如何做到這一點?通過它

Button[] btnArr = new Button[] { 
    btn1, btn2, btn3,... 
} 

&環:

for(final int i=1; i< country.length; i++){ 
     String Text = "btn" + i; 
     Text.addSelectionListener(new SelectionAdapter() { 
public void widgetSelected(SelectionEvent e) { 

       txtCountry= new Text(shell, SWT.BORDER); 
       txtCountry.setText("Country: " + country[i]); 
       txtCountry.setBounds(22, 112, 204, 30); 
       formToolkit.adapt(txtCountry, true, true); 

       txtHighestMountain = new Text(shell, SWT.BORDER); 
       txtHighestMountain.setText("Highest Mountain: " + highestPoint[i]); 
       txtHighestMountain.setBounds(22, 148, 204, 30); 
       formToolkit.adapt(txtHighestMountain, true, true); 

       txtMeters = new Text(shell, SWT.BORDER); 
       txtMeters.setText("Meters above sea level: " + MAMSL[i]); 
       txtMeters.setBounds(22, 184, 204, 30); 
       formToolkit.adapt(txtMeters, true, true); 
       } 
} 
+1

究竟是什麼問題?有什麼錯誤? –

+0

我收到以下錯誤:方法addSelectionListener(new SelectionAdapter(){})未定義類型字符串 – HRS

回答

1

創建buttonarray一個S

for(int i = 0; i < btnArr.length; i++) { 
    btnArr[i].addSelectionListener(new SelectionAdapter()....) 
} 

此外,優化你的代碼,可以考慮創建一個自定義SelectionListener中

+0

感謝看起來像一個很好的方式來做到這一點,但是當試圖實現數組時,我得到以下錯誤:btnArr無法解析爲變量。這裏有什麼建議? – HRS

+0

你必須聲明它。檢查我的編輯。 '按鈕[] btnArr =新...' –

1

要實現您的第一個目標,只需使用按鈕創建List,並在每次迭代中插入SelectionAdapter。

List<Button> buttons = // fill the list 

for (Button b : buttons) { 
    b.addSelectionListener(new SelectionAdapter() {....}); 
} 
0

在你的代碼中,你要爲你的字符串添加一個SelectionListener。 您需要將偵聽器添加到Button中。此外,代碼可以簡化一點,比如在專用方法中使用SelectionListener。

一個例子:

private Button[] getButtons() { 
    Button[] buttons = new Button[country.length]; 

    for (final int i = 1; i < country.length; i++) { 
     String text = "btn" + i; 
     Button button = new Button(text); 
     button.addSelectionListener(getCountrySelectionListener(country[i])); 
     buttons[i] = button; 
    } 
    return buttons; 
} 

private SelectionListener getCountrySelectionListener(final String country) { 
    return new SelectionAdapter() { 
     public void widgetSelected(SelectionEvent e) { 

      txtCountry = new Text(shell, SWT.BORDER); 
      txtCountry.setText("Country: " + country); 
      txtCountry.setBounds(22, 112, 204, 30); 
      formToolkit.adapt(txtCountry, true, true); 

      txtHighestMountain = new Text(shell, SWT.BORDER); 
      txtHighestMountain.setText("Highest Mountain: " + highestPoint[i]); 
      txtHighestMountain.setBounds(22, 148, 204, 30); 
      formToolkit.adapt(txtHighestMountain, true, true); 

      txtMeters = new Text(shell, SWT.BORDER); 
      txtMeters.setText("Meters above sea level: " + MAMSL[i]); 
      txtMeters.setBounds(22, 184, 204, 30); 
      formToolkit.adapt(txtMeters, true, true); 
     } 
    } 
} 

這假定所需的變量和這樣是全局的。如果不是,您可以隨時將它們作爲參數傳遞,或爲相關值創建一個Bean(Wrapper對象),例如Country Bean。