⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modellist.java

📁 代码是一个分类器的实现,其中使用了部分weka的源代码。可以将项目导入eclipse运行
💻 JAVA
字号:
/* *    This program is free software; you can redistribute it and/or modify *    it under the terms of the GNU General Public License as published by *    the Free Software Foundation; either version 2 of the License, or *    (at your option) any later version. * *    This program is distributed in the hope that it will be useful, *    but WITHOUT ANY WARRANTY; without even the implied warranty of *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *    GNU General Public License for more details. * *    You should have received a copy of the GNU General Public License *    along with this program; if not, write to the Free Software *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *//* *    ModelList.java *    Copyright (C) 2006 Robert Jung * */package weka.gui.ensembleLibraryEditor;import weka.classifiers.EnsembleLibraryModel;import weka.classifiers.EnsembleLibraryModelComparator;import java.awt.Color;import java.awt.Component;import java.util.Arrays;import java.util.Collection;import java.util.Iterator;import java.util.SortedSet;import java.util.TreeSet;import javax.swing.AbstractListModel;import javax.swing.DefaultListCellRenderer;import javax.swing.JComponent;import javax.swing.JList;/** * This class is basically a customization of the JList class to allow it * to display LibraryModel objects.  It has two nested helper classes that * respectively take care of rendering and modelling the List of models. *  * @author Robert Jung (mrbobjung@gmail.com) */public class ModelList   extends JList {    /** for serialization */  private static final long serialVersionUID = -421567241792939539L;  /**   * The constructor simply initializes the model and the renderer.   */  public ModelList() {    super();    this.setModel(new SortedListModel());    this.setCellRenderer(new ModelListRenderer());  }    /**   * This nested helper class is responsible for rendering each Library   * Model object.     */  public class ModelListRenderer     extends DefaultListCellRenderer {        /** for serialization */    private static final long serialVersionUID = -7061163240718897794L;    /**     * This is the only method necessary to overload.  All we have to      * do is print the String value of the model along with its index      * in the ModelList data structure.     *      * @param list		the JList     * @param value		the value     * @param index		the index of the value     * @param isSelected	if true the item is selected     * @param cellHasFocus	whether it has the focus     * @return			the rendering component     */    public Component getListCellRendererComponent(JList list, Object value,	int index, boolean isSelected, boolean cellHasFocus) {            Component modelComponent = null;            if (value instanceof EnsembleLibraryModel) {		EnsembleLibraryModel model = ((EnsembleLibraryModel) value);		String modelString = index	+ ": "	+ model.getStringRepresentation().replaceAll(	    "weka.classifiers.", "");		modelComponent = super.getListCellRendererComponent(list,	    modelString, index, isSelected, cellHasFocus);		if (!model.getOptionsWereValid()) {	  modelComponent.setBackground(Color.pink);	}		((JComponent) modelComponent).setToolTipText(model	    .getDescriptionText());	      }            return modelComponent;    }  }    /**   *    * This is a helper class that creates a custom list model for the ModelList class.   * It basically ensures that all model entries are 1) unique - so that no duplicate   * entries can find their way in, and 2) sorted alphabetically.  It also numbers    * them.   * <p/>   * This nested class was adapted from code found in a freely available tutorial on   * sorting JList entries by John Zukowski - wait a sec, he's the guy who wrote the   * other tutorial I cited in the AddModelsPanel. wow, different web site even.    * This guy is really in to writing tutorials.  Anyway, it was very helpful, if    * you would like to know more about implementing swing MVC stuff.   * <p/>   * Anyway, John Zukowski's tutorial can be found at: <br/>   * <a href="http://www.jguru.com/faq/view.jsp?EID=15245" target="_blank">http://www.jguru.com/faq/view.jsp?EID=15245</a>   */  public class SortedListModel extends AbstractListModel {        /** for serialization */    private static final long serialVersionUID = -8334675481243839371L;        /** Define a SortedSet */    SortedSet m_Models;        /**     * default constructor     */    public SortedListModel() {      // Create a TreeSet      // Store it in SortedSet variable      m_Models = new TreeSet(new EnsembleLibraryModelComparator());    }        // ListModel methods    public int getSize() {      // Return the model size      return m_Models.size();    }        public Object getElementAt(int index) {      // Return the appropriate element      return m_Models.toArray()[index];    }        // Other methods    public void add(Object element) {      if (m_Models.add(element)) {	fireContentsChanged(this, 0, getSize());      }    }        public void addAll(Object elements[]) {      Collection c = Arrays.asList(elements);      m_Models.addAll(c);      fireContentsChanged(this, 0, getSize());    }        public void clear() {      m_Models.clear();      fireContentsChanged(this, 0, getSize());    }        public boolean contains(Object element) {      return m_Models.contains(element);    }        public Object firstElement() {      // Return the appropriate element      return m_Models.first();    }        public Iterator iterator() {      return m_Models.iterator();    }        public Object lastElement() {      // Return the appropriate element      return m_Models.last();    }        public boolean removeElement(Object element) {      boolean removed = m_Models.remove(element);      if (removed) {	fireContentsChanged(this, 0, getSize());      }      return removed;    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -