【问题标题】:How to add this to a JList如何将其添加到 JList
【发布时间】:2014-03-31 22:29:26
【问题描述】:

我想将 List[i] 的每个项目添加到不同的 Jlist 中,例如第一个 jList 会有 Hello,bye,good,bad,nice,Ses,Iteme

我想做4个不同的JList,

  • 第一个与你好,再见,好,坏......
  • 第二个是 569.99,551.59,678.99,....
  • 第三个 55,52,72,.... 和
  • 最后一个有 jlas,byew,good2

class List
{

    Info[] List;

    public void createList()
    {

        List = new Info[7];

        List[0] = new Info("Hello",569.99,55,"jlas");

        List[1] = new Info("bye",551.59,52,"byew");
        List[2] = new Info("good",678.99,72,"good2");
        List[3] = new Info("bad",4547.959,151,"bad2");
        List[4] = new Info("nice",3554.99,235,"wii-U.jpg");
        List[5] = new CInfo("Ses",1140.99,4,"das");
        List[6] = new Info("Iteme",584.95,5,"sade");    


    }
}

【问题讨论】:

  • 我想做 4 个不同的 JList,第一个是 Hello,bye,good,bad……第二个是 569.99,551.59,678.99,.... 第三个是 55 ,52,72,.... 最后一个带有 jlas,byew,good2,.....
  • 您可以随时编辑自己的问题以添加更多信息; @Frakcool 为你做了这件事。
  • 你有同名的类和变量? List 类和 List 一个信息数组。

标签: java arrays swing jlist


【解决方案1】:

将所有值添加到ListModel

DefaultListModel model = new DefaultListModel();
for (Info info : List) {
    model.addElement(model);
}

然后将此模型添加到您的每个JLists...

JList list1 = new JList(model);
JList list2 = new JList(model);
JList list3 = new JList(model);
JList list4 = new JList(model);

现在,有趣的部分来了,为您想要显示数据的每种不同方式创建一个 ListCellRenderer...

import java.awt.Component;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;

public class ListTest {

    public static void main(String[] args) {

    }

    public class InfoNameListCellRenderer extends DefaultListCellRenderer {

        @Override
        public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
            if (value instanceof Info) {
                Info info = (Info)value;
                value = info.getName(); // Or what ever getter you have available for such things
            }
            return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); 
        }



    }

}

并将其应用于适当的列表...

list1.setCellRenderer(new InfoNameListCellRenderer());

请记住,建模数据是模型的责任,渲染数据是渲染器的责任。请勿更改模型以满足您的渲染要求。

查看Concepts: Editors and RenderersWriting a Custom Cell Renderer 了解更多详情

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 2015-11-11
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    相关资源
    最近更新 更多