0
我已經爲下一個文本框的下拉菜單編寫了以下代碼片段,ProjectName。按下該按鈕後,將會打開一個下拉菜單,其中MenuItem
用於指定位置中的每個文件。當用戶按下MenuItem
中的文字時,ProjectName將被更改爲文件的名稱。將文件數組轉換爲多個MenuItems
static File file = new File("C:\\GradeCalc\\java\\saves\\");
static File[] listOfFiles = file.listFiles();
Button btn = new Button(Name, SWT.FLAT|SWT.ARROW|SWT.DOWN);
btn.setBounds(280, 50, 20, 20);
btn.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
Menu menu = new Menu(Save_Dialog, SWT.POP_UP);
for (int i = 0; i < listOfFiles.length; i++) {
switch(i) {
case 0: MenuItem item1 = new MenuItem (menu, SWT.PUSH);
item1.setText(listOfFiles[0].getName());
item1.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
ProjectName.setText(listOfFiles[0].getName());
}});
break;
case 1: MenuItem item2 = new MenuItem (menu, SWT.PUSH);
item2.setText(listOfFiles[1].getName());
item2.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
ProjectName.setText(listOfFiles[1].getName());
}});
break;
case 2: MenuItem item3 = new MenuItem (menu, SWT.PUSH);
item3.setText(listOfFiles[2].getName());
item3.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
ProjectName.setText(listOfFiles[2].getName());
}});
break;
case 3: MenuItem item4 = new MenuItem (menu, SWT.PUSH);
item4.setText(listOfFiles[3].getName());
item4.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
ProjectName.setText(listOfFiles[3].getName());
}});
break;
case 4: MenuItem item5 = new MenuItem (menu, SWT.PUSH);
item5.setText(listOfFiles[4].getName());
item5.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
ProjectName.setText(listOfFiles[4].getName());
}});
break;
}
}
Point pt = Save_Dialog.getLocation();
menu.setLocation(pt.x + 280, pt.y + 100);
menu.setVisible(true);
}});
的代碼運行正常,因爲它應該,但創造的MenuItems
數量取決於在switch
陳述案件的數量。如果位置和案例中有更多文件,則下拉菜單將不包含位置中所有文件的名稱。
所以這是我的問題。如何爲位置中的每個文件創建一個MenuItem
而不依賴於switch
語句或任何其他硬編碼值中的個案數?
非常感謝你。你的代碼工作完美。我使用了'switch'語句,因爲我想爲'File []'中的每個文件創建一個MenuItem,並且不確定如何動態創建MenuItems。我知道它可以完成,但我不確定如何。再次感謝您的幫助。 – JavaCodeBuilder
@JayCodeBuilder不客氣。 – Baz