2011-04-22 180 views
0

我想添加/刪除JList中的按鈕。我該怎麼做?添加和刪除JList中的按鈕

+0

爲什麼?爲什麼?爲什麼? (一個「爲什麼」對我來說足夠了,但是這個輸入字段堅持15個字節;) – kleopatra 2011-04-23 10:08:59

+1

因爲OP沒有闡明(極不尋常的)要求而被降低投票。由於不明確的要求,答案是廣泛的猜測(對於他們所做的假設最爲正確);-)。 – kleopatra 2011-04-26 23:00:36

回答

0

JList.addElement()和JList.removeElement可以用來添加刪除的連接元素和JList的。

+1

發明API可能是誘人的 - 但不是太有幫助;-) javax.swing.JList中沒有這樣的方法。 – kleopatra 2011-04-26 22:51:42

2

或者,考慮按鈕友好的JToolBar,如How to Use Tool Bars所示。

+0

+1非常好的一點。是的,工具欄聽起來更適合按鈕。 – Boro 2011-04-22 12:59:55

2

@rohit我在這裏想知道,你在JList中需要什麼?如果你想垂直放置,你應該使用一些佈局管理器,例如BoxLayout或(更好)GridLayout。

真的沒有理由爲什麼你應該有一個JList中的按鈕,在一個面板中有他們將有相同的結果。

認真地嘗試重新考慮您的設計,並使用佈局管理器更靈活,更輕鬆。

一切順利,博羅。

+0

我在想,或許''JList.HORIZONTAL_WRAP'帶有'SINGLE_SELECTION'模型可能會有一些吸引力,但按照您的建議,按鈕佈局似乎更易於管理。 – trashgod 2011-04-22 13:11:05

0

我使用此代碼。試試吧

class PanelRenderer implements ListCellRenderer { 

    @Override 
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 
     JButton renderer = (JButton) value; 
     renderer.setBackground(isSelected ? Color.red : list.getBackground()); 
     return renderer; 
    } 
} 

public void ShowItemList(List<JButton> buttonList, JPanel container) { 


     DefaultListModel model = new DefaultListModel(); 

     for (JButton b:buttonList) { 

       model.addElement(b); 

     } 
     final JList list = new JList(model); 
     list.setFixedCellHeight(40); 
     list.setSelectedIndex(-1); 

     list.setCellRenderer(new JPanelToJList.PanelRenderer()); 
     JScrollPane scroll1 = new JScrollPane(list); 
     final JScrollBar scrollBar = scroll1.getVerticalScrollBar(); 
     scrollBar.addAdjustmentListener(new AdjustmentListener() { 
      @Override 
      public void adjustmentValueChanged(AdjustmentEvent e) { 
       System.out.println("JScrollBar's current value = " + scrollBar.getValue()); 
      } 
     }); 
     container.removeAll(); 
     container.add(scroll1); 
} 

如果你想添加一個JButton將它添加到列表中。如果要刪除,請將其從列表中刪除並再次運行該方法。