我正在製作一個數據庫管理器,它向您顯示一個包含所有表數據的JTable。這些想法是在左側有一個JList和表名,您可以在其中選擇要顯示的表。從另一個類獲得JList selectedvalue的最佳方式
所以我有一個類,我管理所有的表數據,所以,另一個JList。
JList類從JPanel擴展而來,我創建了一個getInstance()方法,這樣我就可以創建一個JList實例。我還有一個名爲getSelectedValue()的方法,它主要在JTable類中調用以顯示選定的表信息。
可是這樣一來我有問題,我調試,我得到在JList中構造一個錯誤,在這裏OS代碼:
public class DatabaseJList extends JPanel {
private static DatabaseJList instance = null;
private static DefaultListModel listModel = new DefaultListModel();
private static JList list;
public DatabaseJList() {
setLayout(new BorderLayout());
model = new DefaultListModel();
list = new JList(model);
JScrollPane pane = new JScrollPane(list);
Vector<String> vector = new Vector(DatabaseTableManagers.getInstance().getTableNames());
for(int i=0; i<vector.size() ; i ++)
{
String string = vector.elementAt(i);
model.addElement(string);
}
add(pane, BorderLayout.NORTH);
}
public Object getSelectedObject() {
return list.getSelectedValue();
}
public void setSelectedObject(String str)
{
list.setSelectedValue(str, true);
}
public static DatabaseJList getInstance()
{
if (instance == null)
{
instance = new DatabaseJList();
}
return instance;
}
當getInstance方法被調用一次,並繼續進行「新的DatabaseJList();」它進入構造函數並停下來,在那些我看不到的調試知識的情況下就停下來了。有任何想法嗎?謝謝大家;)
題外話:具有靜態方法返回一個實例,它被稱爲一個單例模式,並在這一點,你使構造私人(或保護)。類本身不能正常實例化。 –