我为文本框ProjectName旁边的下拉菜单编写了以下代码。按下按钮时,将打开一个下拉菜单,其中MenuItem
包含指定位置的每个文件。当用户按下ProjectNameMenuItem
中的文本时,将更改为文件的名称。
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
语句中的案例数量或任何其他硬编码值的情况下为该位置的每个文件创建一个?