2016-03-07 65 views
0

嗨,大家好我正在研究一些Java程序,並且一直困住了幾個小時試圖弄清楚這一點。希望你能幫助我,我發現GU​​I部分是最困難的。問題如下: 創建一個名爲Hobby的類,它具有Hobby對象的屬性hobbyName和一個 構造函數,該對象接受一個String名稱作爲參數。創建一個名爲HobbyList的類,該類包含一個Vector或Array of 10個愛好(這兩個類將代表系統中的數據(或模型))。向HobbyList類中添加一個 addHobby(向vector添加Hobby)和getHobby(返回Hobbies的向量)方法。創建兩個視圖類,調用一個視圖類ListView(使用JList GUI顯示HobbyList中保存的愛好),並調用另一個類ComboView類(使用JComboBox)。在每個GUI中提供一種方法將其添加到HobbyList和另一個按鈕來刷新列表顯示。保持監聽器類獨立於GUI類(監聽器類\
代表控制器\控制器)。MVC模式GUI程序java(更新GUI)

public class hobby { 

    String hobbyName; 

    public hobby(String hobby) 
    { 
     this.hobbyName = hobby; 

    } 
} 

HobbyList類到目前爲止

mport java.util.ArrayList; 



public class HobbyList { 



    public static void main(String[] args) { 
     Hobbies.add("BasketBall"); 
     Hobbies.add("FootBall"); 


} 
    static ArrayList<String> Hobbies = new ArrayList<String>(); 
    public void addHobby() 
    { 
     String hobby = ""; 
     Hobbies.add(hobby); 
    } 

    public ArrayList<String> getHobby() 
    { 
     return Hobbies; 
    } 
} 

的ListView類到目前爲止

import javax.swing.*; 
import java.awt.*; 
import javax.swing.event.*; 
import java.awt.event.*; 

class ListView extends JFrame 
{ 
    public static void main (String [] args) 
    { 
    JFrame frame = new JFrame("List View"); 
     frame.setVisible(true); 
     frame.setSize(300,400); 


     JButton button = new JButton(); 
     button.setText("Add"); 
     JList HobbieValues = new JList(Hobbies); //Not working 

     JPanel ListPanel = new JPanel(); 
     ListPanel.add(button); //Add Button to Panel 
     ListPanel.add(HobbieValues); 
     frame.add(ListPanel); //Add Panel to frame 

} 
} 

回答

0

我想你應該行

JList HobbieValues = new JList(Hobbies); 

改變

JList HobbieValues = new JList(HobbyList.Hobbies); 

雖然我認爲JList只接受一個Vector或數組作爲參數。在這種情況下,我們可以將以下內容更改爲

JList HobbieValues = new JList(HobbyList.Hobbies.toArray()); 
+0

您知道,雖然此方法有效,但通常最好定義一個包裝'HobbyList'的ListModel,但這可能會使OP的頭部爆炸。 。也是'HobbyList'是一個類不是對象 – MadProgrammer

+0

是的,但愛好列表是靜態的。 –

+0

嗯,好吧,OP可以做出來的問題 – MadProgrammer