2013-08-03 62 views
0

我有JXHyperlinks列表檢索特定的項目,我需要檢索逐一添加到面板從一個JList

代碼:

for(int i=1; i<=lcol-1;i++) 
{ 
    a2=sheet.getCell(i,0); 
    stringy=a2.getContents(); 
    testlink= new JXHyperlink(new Action(stringy)); 
    list.add(testlink); 

} 
for(int i=0;i<list.getModel().getSize();i++) 
{ 
    panel2.add(list.getModel().getElementAt(i)); 

} 

第一循環創建帶有各自名稱的鏈接列表(取自Excel文件)。 第二個循環採用預先製作的列表並將每個對象添加到面板。 問題是,ID不會添加它們。

+0

它更有可能是panel2被陰影或不被添加到顯示的組件 – MadProgrammer

+0

沒有。如果我在這個函數之前添加組件,比如button和textarea,但是我添加的任何內容都不是。 – arthur

+1

爲什麼?通常組件不會添加到列表(樹,表..) – kleopatra

回答

0

問題是,您正在將JXHyperlink組件直接添加到列表中,而不是列表模型。

for(int i=1; i<=lcol-1;i++) 
{ 
    a2=sheet.getCell(i,0); 
    stringy=a2.getContents(); 
    testlink= new JXHyperlink(new Action(stringy)); 
    // I'm the JList, not it's model :P 
    list.add(testlink); 
} 
// I bet nothing exists in the model 
for(int i=0;i<list.getModel().getSize();i++) 
{ 
    panel2.add(list.getModel().getElementAt(i)); 
} 

這不是列表應該如何工作。

相反,鏈接String添加到ListModel並使用JXHyperlink作爲基地爲ListCellRenderer,然後在列表中

詳情請參閱How to use listsJXHyperlink一個實例添加到面板每個String,在特別是,Creating a modelWriting a Custom cell Renderer

1

你很困惑ListJList。列表#添加從集合,並添加一個對象本身。 JList#add從Container中嵌入並將一個組件添加到Container。因此,Jlist#添加它的像JPanel#add