存在以下程序:
import java.awt.Container;import javax.swing.JFrame;
import javax.swing.JList;
class DemoFrame extends JFrame
{
public DemoFrame()
{
Container c=getContentPane();
String sports[]={"足球","排球","乒乓球","篮球"};
JList li=new JList(sports);
li.setVisibleRowCount(3);

c.add(li);

li.remove(0);
li.removeAll();
}
}
public class Example6_3_2
{ public static void main(String[] args) 
{
DemoFrame f=new DemoFrame();
f.setVisible(true);
f.pack();
}}
为什么
li.setVisibleRowCount(3);--------》我预期效果是在JList中只能有3个显示,但是4个选项还是同时显示。
li.remove(0);--------》删除不了第一个选项
li.removeAll();--------》一个都没有删除
这三句为什么不能达到效果呢?
谢谢。我用的JDK是1.6的。

解决方案 »

  1.   

    JList好像是MVC型的组件吧,增加删除什么的必须通过其ListModel来增加和删除
      

  2.   

    setVisibleRowCount(3) 好像是指定了JScrollPane才有效果,但我不确定了。。
      

  3.   

    DefaultListModel   model=new   DefaultListModel();   
    JList   jList1   =   new   JList(model);  
    model.addElement("足球");”
    通过DefaultListModel 来进行增添删除
      

  4.   

    看看我写的,是如何构建JList的,以及如何来删除某个item的。import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.DefaultListModel;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;public class TestList extends JFrame { private JPanel jContentPane = null;
    private JScrollPane jScrollPane = null;
    private JList viewtable = null;
    private JButton jButton = null;
    // 建立一个模型,之后的表将在建立在模型下,或者说是以模型为一个基本模板;
    DefaultListModel dtm = null;
    /**
     * This method initializes jScrollPane
     * 
     * @return javax.swing.JScrollPane
     */ // 使用JTABLE ON JSCROLLPANE控件;
    private JScrollPane getJScrollPane() {
    if (jScrollPane == null) {
    jScrollPane = new JScrollPane();
    jScrollPane.setBounds(new java.awt.Rectangle(40, 40, 650, 200));
    jScrollPane.setViewportView(getViewtable());
    }
    return jScrollPane;
    } /**
     * This method initializes viewtable
     * 
     * @return javax.swing.JTable
     */
    // 初始化表;
    private JList getViewtable() {
    if (viewtable == null) {
    viewtable = new JList();

    dtm = new DefaultListModel();
    dtm.addElement("hello");
    dtm.addElement("zhtsuc");
    dtm.addElement("zhtsuc_second");
    // 用模型建立表;
    viewtable = new JList(dtm);
    }
    return viewtable;
    } /**
     * This method initializes jButton
     * 
     * @return javax.swing.JButton
     */
    private JButton getJButton() {
    if (jButton == null) {
    jButton = new JButton();
    jButton.setText("del");
    jButton.setBounds(new java.awt.Rectangle(289, 316, 165, 28)); jButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
    int numrow = viewtable.getSelectedValues().length;
    Object[] objs = viewtable.getSelectedValues();
    for (int i = 0; i < numrow; i++) {
    dtm.removeElement(objs[i]);
    } }
    });
    }
    return jButton;
    } /**
     * @param args
     */
    public static void main(String[] args) {
    TestList test = new TestList();
    test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    test.setVisible(true); } /**
     * This is the default constructor
     */
    public TestList() {
    super();
    initialize(); } /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
    this.setSize(772, 500);
    this.setContentPane(getJContentPane());
    this.setTitle("JFrame");
    } /**
     * This method initializes jContentPane
     * 
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
    if (jContentPane == null) {
    jContentPane = new JPanel();
    jContentPane.setLayout(null);
    jContentPane.add(getJScrollPane(), null);
    jContentPane.add(getJButton(), null);
    }
    return jContentPane;
    }}