0

私は以前に同様の質問をしましたが、私が解決できない目前の主要な問題に気づきました:

現在、フレームAddStudentがロードされるとすぐにロードされるSundayListと呼ばれるArrayListがあります(GUIのビット)

生徒の追加クラス: 編集済み

public class AddStudent extends javax.swing.JFrame {

    public AddStudent() {
    initComponents();
     }
private void loadLists() throws IOException
    {
        //Creating the array of Activities to put into the ComboBoxes
        File f = new File("Activities.dat");

        sundayList = new ArrayList<>();
        mondayList= new ArrayList<>();
        tuesdayList= new ArrayList<>();
        wednesdayList= new ArrayList<>();
        thursdayList= new ArrayList<>();


try{
    BufferedReader reader = new BufferedReader(new FileReader(f));

     while(reader.ready())
        {
            String CDay = reader.readLine();                               
            String CActivityName = reader.readLine();
            String CSupervisor = reader.readLine();
            String CLocation = reader.readLine();
            String CPaid = reader.readLine();
            String nothing = reader.readLine();

            if(CDay.equals("Sunday"))
            {
                sundayList.add(CActivityName);
            }
            else if(CDay.equals("Monday"))
            {
                mondayList.add(CActivityName);
            }
            else if(CDay.equals("Tuesday"))
            {
                tuesdayList.add(CActivityName);
            }
            else if(CDay.equals("Wednesday"))
            {
                wednesdayList.add(CActivityName);
            }
            else if(CDay.equals("Thursday"))
            {
                thursdayList.add(CActivityName);
            }                
    }
    reader.close();
}
catch (IOException ex) 
{
    Logger.getLogger(StartUpFrame.class.getName()).log(Level.SEVERE, null, ex);
} 
}
...
comboboxSunday = new javax.swing.JComboBox();
...
}



 public static void main(String args[]) {

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new AddStudent().setVisible(true);
            }
        });
    }

まず、リストSundayListをコンボボックスcomboboxSundayに呼び出してデータを入力しようとしましたが、シンボルが見つからないというエラーしか発生しませんでした。

これを可能にするために何をする必要がありますか?

また、私はこれまでに見たmySQLに関連するメソッドに慣れていないため、これを回避する予定です。

コンボボックスの現在のコーディング

Netbeansによってコンボボックス用に自動的に生成されるコードは次のとおりです。

comboboxSunday = new javax.swing.JComboBox();

comboboxSunday.setModel(new javax.swing.DefaultComboBoxModel<>(sundayList.toArray(new String[sundayList.size()])));
4

1 に答える 1

3

変数SundayListは、コンストラクターのスコープに制限されています。JComboBoxメソッドでを作成していると仮定するとinitComponents、この変数にアクセスすることはできません。

ただし、クラスメンバー変数を作成して、メソッド間で変数を使用できるようにすることもできますSundayListまた、UIコンストラクターに非UI機能を含めるよりも、データをロードするメソッドを使用する方が適切です。

public class AddStudent {
   private List<String> sundayList;
   private List<String> mondayList;
   ...

   private void loadLists() throws IOException {
      sundayList = new ArrayList<>();
      ...

次に追加するには:

comboboxSunday.setModel(new DefaultComboBoxModel<>(sundayList.toArray(new String[sundayList.size()])));

新しいloadメソッドを呼び出すことを忘れないでください。

AddStudent addStudent = new AddStudent();
addStudent.loadLists();
addStudent.setVisible(true);

余談ですが、Javaの命名規則では、変数は小文字で始まることが示されていることに注意してくださいSundayList sundayList

于 2013-03-11T18:37:00.807 に答える