2013-11-29 82 views
0

我正在編寫一個需要輸入的程序,但輸入字段非常相似(基本上除名稱外,它們是相同的)。在下面粘貼的代碼中,我只顯示了前兩個JPanel的代碼,但總共有7個代碼,而且,我的代碼目前正在設置,我只重複了7次代碼。但是,我覺得應該有一種方法來編寫一個方法,然後我可以簡單地調用該方法7次。那可能嗎?我會怎麼做?我需要具有不同名稱的面板才能將它們分別添加到我的JFrame中。在方法中調用JPanel並將其添加到JFrame中?

我想我要問的是:如何在一個方法中調用非常相似的JPanel,以便在調用該方法時將它們添加到JFrame中。我是Java的完全noob,這是我的第一個大項目。感謝您的任何幫助,您可以提供。

public GPACalculatorController(){ 
    setTitle("GPA Calculator"); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 

    JPanel dataEntryPanel = new JPanel(new GridLayout(0,1)); 
    JPanel dataEntryPanelBorder = new JPanel(new BorderLayout()); 

    JPanel previousSemesterInstructions = new JPanel(new BorderLayout()); 
    previousSemesterInstructions.add(new JLabel("Previous Semesters:"), BorderLayout.WEST); 

    dataEntryPanel.add(previousSemesterInstructions); 

    JPanel semesterOnePanel = new JPanel(new FlowLayout()); 

    semesterOnePanel.add(new JLabel("Semester 1:")); 
    semesterOnePanel.add(new JLabel(" GPA:")); 
    semesterGPA = new JTextField(4); 
    semesterOnePanel.add(semesterGPA); 
    //semesterGPA.addActionListener(new SemesterGPAListener()); 
    semesterOnePanel.add(new JLabel("Credits:")); 
    semesterCredits = new JTextField(2); 
    semesterOnePanel.add(semesterCredits); 
    //semesterCredits.addActionListener(new SemesterCreditsListener()); 
    dataEntryPanel.add(semesterOnePanel); 

    JPanel semesterTwoPanel = new JPanel(new FlowLayout()); 
    semesterTwoPanel.add(new JLabel("Semester 2:")); 
    semesterTwoPanel.add(new JLabel(" GPA:")); 
    semesterGPA = new JTextField(4); 
    semesterTwoPanel.add(semesterGPA); 
    //semesterGPA.addActionListener(new SemesterGPAListener()); 
    semesterTwoPanel.add(new JLabel("Credits:")); 
    semesterCredits = new JTextField(2); 
    semesterTwoPanel.add(semesterCredits); 
    //semesterCredits.addActionListener(new SemesterCreditsListener()); 
    dataEntryPanel.add(semesterTwoPanel); 
+0

創建'SemesterPanel'類並讓其中一個構造函數接受'int'參數。 –

+0

這就是我的想法,但如果我這樣做,是不是所有的面板都是同一個東西?如果這樣做,編譯器會不會因爲我具有相同的變量而聲名狼借? – TheFaceOfBoe

+1

使用要分配給組件的名稱作爲參數定義構造函數「SemesterPanel」。 – Prasad

回答

0

創建它接受一個參數來創建的新JPanel類或可能的方法(功能)。 使用frameObject.setContentPane(panelObject) 按照你的要求將該面板添加到框架

+0

討厭說這個,但我仍然完全困惑(我是一個完整的初學者在編程)。 我寫了一個方法public具有以下簽名 「的JPanel previousSemesterData(INT semesterNumber)」 ,然後在我的控制器類做 「的JPanel mySemester =新previousSemesterData(1); dataEntryPanel.add(mySemester); 「 但它還沒有做任何事情。我很抱歉,我只是很困惑。任何幫助將不勝感激。 – TheFaceOfBoe