2014-01-14 38 views
0

嘗試列出JList中的節點,以便我可以從列表中選擇一個節點。JList沒有顯示爲列表,只是一個點...也許是一個圖形點?

我有這樣的代碼(和更多)...

setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 
JPanel row1 = new JPanel(); 
JPanel row2 = new JPanel(); 
JLabel flabel = new JLabel("Förbindelse från " + n1 +" till " + n2, JLabel.CENTER); 
JScrollPane scroll = new JScrollPane(JLista); 
DefaultListModel<Edge<Node>> Jlistan = new DefaultListModel<Edge<Node>>(); 

List<Edge<Node>> listan = listGraph.getEdgesBetween(n1,n2); 
for (Edge<Node> listEdge : listan) { 
Jlistan.addElement(listEdge); 
} 

JLista = new JList<Edge<Node>> (Jlistan); 
JLista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
JLista.setLayoutOrientation(JList.HORIZONTAL_WRAP); 
JLista.setVisibleRowCount(5); 
JLista.setSize(100, 100); 
getJlistVal(); 

row2.add(scroll); 
row1.add(flabel); 
add(row1); 
add(row2); 
} 

...

public Edge<Node> getJlistVal(){ 
return JLista.getSelectedValue(); 
} 

但何時上市,我剛上車的JPanel的一個小點,我想它的圖形點,或非常非常小的Jlist。 :(不能發佈圖片尚未...

  1. 我認爲它與pixelsize做,但不這樣認爲?
  2. 指定列表??
  3. 的大小要顯示的列表是一個通用的列表類型節點。我有我調用一個方法,就是返回類型好嗎?

//謝謝

- 幫助我的StackOverflow。你是我的唯一希望...

回答

1

您使用空列表創建滾動實例。

JScrollPane scroll = new JScrollPane(JLista); 

只是招行之後

JLista = new JList<Edge<Node>> (Jlistan); 
+0

謝謝!沒有的伎倆 – JAVAuser609014

0

你可以做的是,得到getJlistVal()的值,並返回值爲String

String selected = jList1.getSelectedItem().toString();

,並試圖返回值。告訴我它是否打印。我現在無法自己測試它。 只是一個建議嘗試,讓我知道它是如何去。

目前你的方法getJListVal()正在做的是,返回值作爲元素。這可能是你的問題。嘗試將其作爲String,int或泛型變量類型返回,然後嘗試顯示它。

1

不知道你做錯了什麼,因爲你的例子不是沒有你的其他類編譯,但是當我使用上面的代碼,將在我自己的一點,它的作品。唯一的區別是我使用了Box而不是BoxLayout,這幾乎是一回事,只是Box使用了JPanel。我不得不這樣做,因爲它不允許使用JFrame子類中的this。您可以測試它

import javax.swing.Box; 
import javax.swing.JFrame; 
import static javax.swing.JFrame.EXIT_ON_CLOSE; 
import javax.swing.JLabel; 
import javax.swing.JList; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.ListSelectionModel; 
import javax.swing.SwingUtilities; 

/** 
* 
* @author Paul SamSotha 
*/ 
public class TestList extends JFrame { 

    public TestList() { 
     String[] list = {"Hello", "Jello", "Wello"}; 
     JList JLista = new JList(list); 

     JPanel row1 = new JPanel(); 
     JPanel row2 = new JPanel(); 
     JLabel flabel = new JLabel("Förbindelse från ", JLabel.CENTER); 
     JScrollPane scroll = new JScrollPane(JLista); 

     JLista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
     JLista.setLayoutOrientation(JList.HORIZONTAL_WRAP); 
     JLista.setVisibleRowCount(5); 
     JLista.setSize(100, 100); 


     row2.add(scroll); 
     row1.add(flabel); 
     Box box = Box.createVerticalBox(); 
     box.add(row1); 
     box.add(row2); 

     add(box); 
    } 

    public static void createAndShowGui() { 
     JFrame frame = new TestList(); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.setLocationRelativeTo(null); 
     frame.pack(); 
     frame.setVisible(true); 

    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGui(); 
      } 
     }); 
    } 
} 

enter image description here


「我是不是要指定列表的大小?「

沒有,你可以調用該框架上.pack(),讓包做它的魔力

相關問題