8535.com-新浦京娱乐场官网|欢迎您

新浦京娱乐场官网JList动态添加元素,jlist动态元

来源:http://www.dnamique.com 作者:计算机网络 人气:80 发布时间:2019-10-09
摘要:JList动态添欧元素,jlist动态成分 JList动态添法郎素   学Java时用到了JList不知怎么添比索素,这里说说笔者的阅历:   Jlist显示对象列表並且同意客户挑选一个或多少个项的组件。单独

JList动态添欧元素,jlist动态成分

JList动态添法郎素  

学Java时用到了JList不知怎么添比索素,这里说说笔者的阅历:

  Jlist显示对象列表並且同意客户挑选一个或多少个项的组件。单独的模子 ListModel 维护列表的内容。

  这里要专心在把Jlist增多到容器时可以挑采取JScrollPane(提供轻量级组件的 scrollable 视图。JScrollPane 管理视口、可选的垂直和档案的次序滚动条以及可选的行和列标题视口。)

 例如:JPanel jp = new JPanel();

      JScrollPane jsp = new JScrollPane();

     JList jl = new JList();

      jsp.add(jl);

      jp.add(jsp);

   这里只是个例子:为了表达JList 对象无法一贯抬高到JPanel中,而是要增加到JScrollPane中,之后再把JScrollPane 对象加多到JPanel中。这里未有加有关布局管理器的代码,读者可以依据这一个观念自行增添。(那只是小编的经历,如有越来越好的措施还请补充)。

   再说说怎么动态的添港成分到JList中:

  先举个例子表达静态的添日币素:

   String[] data = {"one", "two", "three", "four"};
    JList myList = new JList(data);    

   Vector superClasses = new Vector();
    Class rootClass = javax.swing.JList.class;
    for(Class cls = rootClass; cls != null; cls = cls.getSuperclass()) {
        superClasses.addElement(cls);
    }
    JList myList = new JList(superClasses);

 

   ListModel model = myList.getModel();
    for(int i = 0; i < model.getSize(); i++) {
         System.out.println(model.getElementAt(i));
    }
    这两种都是jdk文书档案里的例证,都以在创建JList的时候静态的添澳成分,增加后不能够改改,删除,扩大。

   假如要动态的丰裕,以下是小编的经验:

   按本人的明白,其实JList不管数据的丰裕,而是由DefaultListModel类达成数量的增加,先说说那些类的承袭关系。

   ListMode(接口)<----AbstractListMode类<------DefaultListModel类
    例如:

   DefaultListModel dlm = new DefaultListModel();

   dlm.addElement(element1);

    dlm.addElement(element2);

   .....

   JList jl = new JList();

   jl.setModel(dlm);

    那样就把成分都抬高进去了。

同理:要去除全体音讯

   dlm.clear();

   jl.setModel(dlm);

即可。

移除此列表中钦命地方处的因素

则:

   dlm.remove(int index);

   jl.setModel(dlm);

 

简来说之,正是JList不管成分的丰富,而是由DefaultListMode管,最终设置Jlist.setMode(DefaultListMode)就完事了成分的动态增进。想精晓越来越多关于Jlist的文化请查询Jdk扶助文档。

=====================

 

List:

来得对象列表並且同意顾客选取贰个或八个项的机件。

JList的构造方法:

1.依据数组成立列表:

JList(Object[] listData) 
布局多少个 JList,使其出示内定数组中的成分。

 String[] str = { "列表1", "列表2", "列表3", "列表4" };
 JList<String> s = new JList<>(str);

二个轻松易行地列表就彰显出来了。

2.依照钦命的非 null 模型构造二个来得成分的 JList。

JList(ListModel dataModel) 

DefaultListModel<String> model=new DefaultListModel<>();
  model.addElement("列表1");
  model.addElement("列表2");
  model.addElement("列表3");
  model.addElement("列表4");
  JList<String> s = new JList<>(model);

新浦京娱乐场官网 1

一个图纸的JList 

 ImageIcon u = new ImageIcon(this.getClass().getResource("卡通.jpg")); 
   u.setImage( u.getImage().getScaledInstance(50, 50,  Image.SCALE_DEFAULT));
   DefaultListModel<ImageIcon> model=new DefaultListModel<>();
   model.addElement(u);
   model.addElement(u);
   model.addElement(u);
   model.addElement(u);
   JList<ImageIcon> list = new JList<>(model);

新浦京娱乐场官网 2

怎么落实三个又有图表又有文字的JList呢? 

首先认知一下,JList的多少个首要片段:

1.ListModel列表模型,用于获取列表中种种单元格的值以及列表的长短,

咱俩得以通过三番五次AbstractListModel类,来写自个儿的JList列表;AbstractListModel类承袭了贯彻了ListModel接口,何况完结了种类化,

2.ListCellRenderer :单元渲染器。

要想使列表加多图片,那么我们就供给去团结达成这一个ListCellRenderer 那么些接口;

在暗中认可的单元渲染器中,再次来到的是贰个JLable,也正是把二个JLable放入JList中的列表中,作为它的每二个种类;

从JList暗许的单元渲染器中大家能够看出JAVA自带的JList不可以同期落到实处文字以及图片。所以只要要贯彻贰个既有文字又有图片的JList的话,那我们就需求去协和完成单元渲染器;

自定义JLIst列表
1.自定义ListModel列表模型:

public class FriListModel extends  AbstractListModel {

 ArrayList<User> uArray;//好友类表;

 public FriListModel(ArrayList<User> uArray){
   this.uArray=uArray;  
 }
 @Override
 public int getSize() {  
  return uArray.size();
 }
 @Override
 public Object getElementAt(int index) {
  return   uArray.get(index) ;
 }
}

2.自定义单元渲染器

@SuppressWarnings({ "rawtypes", "serial" })
public class FriListCellRenderer  extends JLabel implements ListCellRenderer {
 @Override
 public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
   boolean cellHasFocus) {

    User user=(User)value;//把数据转换为user对象,  在AbstractListModel 中传过来的是一个user对象;
    /*******设置JLable的文字******/ 
       String text="<html>"+user.name+"<br/>"+user.motto+" <html/>";
    setText(text);//设置JLable的文字
    /*******设置JLable的图片*****/
    // 得到此图标的 Image,然后创建此图像的缩放版本。
    Image img=user.u.getImage().getScaledInstance(50, 50, Image.SCALE_DEFAULT);  
       setIcon(new ImageIcon(img));//设置JLable的图片
       setIconTextGap(30);//设置JLable的图片与文字之间的距离
       return this;
 } 
}

为了能够图片的同期相比较例缩放对于图片张开了修改,是她能够相配JList的深浅;

图表的缩放方法:

Image img = image.getImage();  //得到此图标的 Image(image.getImage())
 img = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);   
 // 创建此图像的缩放版本。
  image.setImage(img);//该图像就设置为得到的缩放版本     
 this.image=image;  

然后为了使JList中的文字能够换行用了HTML格式来安装JLable的text; 

3.构建JList

        //*创建一个Jlist,显示好友类表**/
        FriListModel buddy = new FriListModel(uArray);    
        @SuppressWarnings("rawtypes")
  JList buddyList = new JList(buddy); 
                //设置单元渲染器
 buddyList.setCellRenderer(new FriListCellRenderer());
 buddyList.setFont(new Font(Font.SERIF, Font.PLAIN, 18));
        buddyList.setPreferredSize(new Dimension(360, 350));
     /*********给好友列表添加滚动条**************/
  JScrollPane jp = new JScrollPane(buddyList);
  jp.setPreferredSize(new Dimension(360, 400));
  jpanel.add(jp); 

如此三个带图片的文字的JList就抓牢了

终极,来看一看效果:

 

新浦京娱乐场官网 3

JList动态添美成分 学Java时用...

本文由8535.com-新浦京娱乐场官网|欢迎您发布于计算机网络,转载请注明出处:新浦京娱乐场官网JList动态添加元素,jlist动态元

关键词:

最火资讯