0

テキスト ボックス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

4

1 に答える 1