<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSwing%2FJList_Model</id>
		<title>Java Tutorial/Swing/JList Model - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSwing%2FJList_Model"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JList_Model&amp;action=history"/>
		<updated>2026-04-22T08:14:37Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JList_Model&amp;diff=4041&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JList_Model&amp;diff=4041&amp;oldid=prev"/>
				<updated>2010-06-01T04:57:45Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 04:57, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JList_Model&amp;diff=4040&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Swing/JList_Model&amp;diff=4040&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Adding and Removing an Item in a JList Component ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    DefaultListModel model = new DefaultListModel();&lt;br /&gt;
    JList list = new JList(model);&lt;br /&gt;
    // Initialize the list with items&lt;br /&gt;
    String[] items = { &amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot; };&lt;br /&gt;
    for (int i = 0; i &amp;lt; items.length; i++) {&lt;br /&gt;
      model.add(i, items[i]);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Append an item ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    // Create a list that allows adds and removes&lt;br /&gt;
    DefaultListModel model = new DefaultListModel();&lt;br /&gt;
    JList list = new JList(model);&lt;br /&gt;
    int pos = list.getModel().getSize();&lt;br /&gt;
    model.add(pos, &amp;quot;E&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Create a list that allows adds and removes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    DefaultListModel model = new DefaultListModel();&lt;br /&gt;
    JList list = new JList(model);&lt;br /&gt;
    int pos = 0;&lt;br /&gt;
    model.add(pos, &amp;quot;a&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  DefaultListModel and JList ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions of source code must retain the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer in the&lt;br /&gt;
 *     documentation and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Neither the name of Sun Microsystems nor the names of its&lt;br /&gt;
 *     contributors may be used to endorse or promote products derived&lt;br /&gt;
 *     from this software without specific prior written permission.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;quot;AS&lt;br /&gt;
 * IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 */&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Toolkit;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.BorderFactory;&lt;br /&gt;
import javax.swing.Box;&lt;br /&gt;
import javax.swing.BoxLayout;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JSeparator;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.ListSelectionModel;&lt;br /&gt;
import javax.swing.SwingConstants;&lt;br /&gt;
import javax.swing.event.DocumentEvent;&lt;br /&gt;
import javax.swing.event.DocumentListener;&lt;br /&gt;
import javax.swing.event.ListSelectionEvent;&lt;br /&gt;
import javax.swing.event.ListSelectionListener;&lt;br /&gt;
/* ListDemo.java requires no other files. */&lt;br /&gt;
public class ListDemo extends JPanel implements ListSelectionListener {&lt;br /&gt;
  private JList list;&lt;br /&gt;
  private DefaultListModel listModel;&lt;br /&gt;
  private static final String hireString = &amp;quot;Hire&amp;quot;;&lt;br /&gt;
  private static final String fireString = &amp;quot;Fire&amp;quot;;&lt;br /&gt;
  private JButton fireButton;&lt;br /&gt;
  private JTextField employeeName;&lt;br /&gt;
  public ListDemo() {&lt;br /&gt;
    super(new BorderLayout());&lt;br /&gt;
    listModel = new DefaultListModel();&lt;br /&gt;
    listModel.addElement(&amp;quot;Debbie Scott&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;Scott Hommel&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;Sharon Zakhour&amp;quot;);&lt;br /&gt;
    // Create the list and put it in a scroll pane.&lt;br /&gt;
    list = new JList(listModel);&lt;br /&gt;
    list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);&lt;br /&gt;
    list.setSelectedIndex(0);&lt;br /&gt;
    list.addListSelectionListener(this);&lt;br /&gt;
    list.setVisibleRowCount(5);&lt;br /&gt;
    JScrollPane listScrollPane = new JScrollPane(list);&lt;br /&gt;
    JButton hireButton = new JButton(hireString);&lt;br /&gt;
    HireListener hireListener = new HireListener(hireButton);&lt;br /&gt;
    hireButton.setActionCommand(hireString);&lt;br /&gt;
    hireButton.addActionListener(hireListener);&lt;br /&gt;
    hireButton.setEnabled(false);&lt;br /&gt;
    fireButton = new JButton(fireString);&lt;br /&gt;
    fireButton.setActionCommand(fireString);&lt;br /&gt;
    fireButton.addActionListener(new FireListener());&lt;br /&gt;
    employeeName = new JTextField(10);&lt;br /&gt;
    employeeName.addActionListener(hireListener);&lt;br /&gt;
    employeeName.getDocument().addDocumentListener(hireListener);&lt;br /&gt;
    String name = listModel.getElementAt(list.getSelectedIndex()).toString();&lt;br /&gt;
    // Create a panel that uses BoxLayout.&lt;br /&gt;
    JPanel buttonPane = new JPanel();&lt;br /&gt;
    buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.LINE_AXIS));&lt;br /&gt;
    buttonPane.add(fireButton);&lt;br /&gt;
    buttonPane.add(Box.createHorizontalStrut(5));&lt;br /&gt;
    buttonPane.add(new JSeparator(SwingConstants.VERTICAL));&lt;br /&gt;
    buttonPane.add(Box.createHorizontalStrut(5));&lt;br /&gt;
    buttonPane.add(employeeName);&lt;br /&gt;
    buttonPane.add(hireButton);&lt;br /&gt;
    buttonPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));&lt;br /&gt;
    add(listScrollPane, BorderLayout.CENTER);&lt;br /&gt;
    add(buttonPane, BorderLayout.PAGE_END);&lt;br /&gt;
  }&lt;br /&gt;
  class FireListener implements ActionListener {&lt;br /&gt;
    public void actionPerformed(ActionEvent e) {&lt;br /&gt;
      // This method can be called only if&lt;br /&gt;
      // there&amp;quot;s a valid selection&lt;br /&gt;
      // so go ahead and remove whatever&amp;quot;s selected.&lt;br /&gt;
      int index = list.getSelectedIndex();&lt;br /&gt;
      listModel.remove(index);&lt;br /&gt;
      int size = listModel.getSize();&lt;br /&gt;
      if (size == 0) { // Nobody&amp;quot;s left, disable firing.&lt;br /&gt;
        fireButton.setEnabled(false);&lt;br /&gt;
      } else { // Select an index.&lt;br /&gt;
        if (index == listModel.getSize()) {&lt;br /&gt;
          // removed item in last position&lt;br /&gt;
          index--;&lt;br /&gt;
        }&lt;br /&gt;
        list.setSelectedIndex(index);&lt;br /&gt;
        list.ensureIndexIsVisible(index);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  // This listener is shared by the text field and the hire button.&lt;br /&gt;
  class HireListener implements ActionListener, DocumentListener {&lt;br /&gt;
    private boolean alreadyEnabled = false;&lt;br /&gt;
    private JButton button;&lt;br /&gt;
    public HireListener(JButton button) {&lt;br /&gt;
      this.button = button;&lt;br /&gt;
    }&lt;br /&gt;
    // Required by ActionListener.&lt;br /&gt;
    public void actionPerformed(ActionEvent e) {&lt;br /&gt;
      String name = employeeName.getText();&lt;br /&gt;
      // User didn&amp;quot;t type in a unique name...&lt;br /&gt;
      if (name.equals(&amp;quot;&amp;quot;) || alreadyInList(name)) {&lt;br /&gt;
        Toolkit.getDefaultToolkit().beep();&lt;br /&gt;
        employeeName.requestFocusInWindow();&lt;br /&gt;
        employeeName.selectAll();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      int index = list.getSelectedIndex(); // get selected index&lt;br /&gt;
      if (index == -1) { // no selection, so insert at beginning&lt;br /&gt;
        index = 0;&lt;br /&gt;
      } else { // add after the selected item&lt;br /&gt;
        index++;&lt;br /&gt;
      }&lt;br /&gt;
      listModel.insertElementAt(employeeName.getText(), index);&lt;br /&gt;
      // If we just wanted to add to the end, we&amp;quot;d do this:&lt;br /&gt;
      // listModel.addElement(employeeName.getText());&lt;br /&gt;
      // Reset the text field.&lt;br /&gt;
      employeeName.requestFocusInWindow();&lt;br /&gt;
      employeeName.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
      // Select the new item and make it visible.&lt;br /&gt;
      list.setSelectedIndex(index);&lt;br /&gt;
      list.ensureIndexIsVisible(index);&lt;br /&gt;
    }&lt;br /&gt;
    // This method tests for string equality. You could certainly&lt;br /&gt;
    // get more sophisticated about the algorithm. For example,&lt;br /&gt;
    // you might want to ignore white space and capitalization.&lt;br /&gt;
    protected boolean alreadyInList(String name) {&lt;br /&gt;
      return listModel.contains(name);&lt;br /&gt;
    }&lt;br /&gt;
    // Required by DocumentListener.&lt;br /&gt;
    public void insertUpdate(DocumentEvent e) {&lt;br /&gt;
      enableButton();&lt;br /&gt;
    }&lt;br /&gt;
    // Required by DocumentListener.&lt;br /&gt;
    public void removeUpdate(DocumentEvent e) {&lt;br /&gt;
      handleEmptyTextField(e);&lt;br /&gt;
    }&lt;br /&gt;
    // Required by DocumentListener.&lt;br /&gt;
    public void changedUpdate(DocumentEvent e) {&lt;br /&gt;
      if (!handleEmptyTextField(e)) {&lt;br /&gt;
        enableButton();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    private void enableButton() {&lt;br /&gt;
      if (!alreadyEnabled) {&lt;br /&gt;
        button.setEnabled(true);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    private boolean handleEmptyTextField(DocumentEvent e) {&lt;br /&gt;
      if (e.getDocument().getLength() &amp;lt;= 0) {&lt;br /&gt;
        button.setEnabled(false);&lt;br /&gt;
        alreadyEnabled = false;&lt;br /&gt;
        return true;&lt;br /&gt;
      }&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  // This method is required by ListSelectionListener.&lt;br /&gt;
  public void valueChanged(ListSelectionEvent e) {&lt;br /&gt;
    if (e.getValueIsAdjusting() == false) {&lt;br /&gt;
      if (list.getSelectedIndex() == -1) {&lt;br /&gt;
        // No selection, disable fire button.&lt;br /&gt;
        fireButton.setEnabled(false);&lt;br /&gt;
      } else {&lt;br /&gt;
        // Selection, enable the fire button.&lt;br /&gt;
        fireButton.setEnabled(true);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Create the GUI and show it. For thread safety, this method should be&lt;br /&gt;
   * invoked from the event-dispatching thread.&lt;br /&gt;
   */&lt;br /&gt;
  private static void createAndShowGUI() {&lt;br /&gt;
    // Create and set up the window.&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;ListDemo&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    // Create and set up the content pane.&lt;br /&gt;
    JComponent newContentPane = new ListDemo();&lt;br /&gt;
    newContentPane.setOpaque(true); // content panes must be opaque&lt;br /&gt;
    frame.setContentPane(newContentPane);&lt;br /&gt;
    // Display the window.&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    // Schedule a job for the event-dispatching thread:&lt;br /&gt;
    // creating and showing this application&amp;quot;s GUI.&lt;br /&gt;
    javax.swing.SwingUtilities.invokeLater(new Runnable() {&lt;br /&gt;
      public void run() {&lt;br /&gt;
        createAndShowGUI();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  extends AbstractListModel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.AbstractListModel;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
public class JBenchFrame extends JFrame {&lt;br /&gt;
  BorderLayout borderLayout1 = new BorderLayout();&lt;br /&gt;
  JList list1 = new JList();&lt;br /&gt;
  JButton fillButton = new JButton();&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JBenchFrame bm = new JBenchFrame();&lt;br /&gt;
  }&lt;br /&gt;
  public JBenchFrame() {&lt;br /&gt;
    this.getContentPane().setLayout(borderLayout1);&lt;br /&gt;
    this.setSize(new Dimension(400, 300));&lt;br /&gt;
    fillButton.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent e) {&lt;br /&gt;
        ListData ld = new ListData();&lt;br /&gt;
        long tmStart = System.currentTimeMillis();&lt;br /&gt;
        list1.setModel(ld);&lt;br /&gt;
        list1.repaint();&lt;br /&gt;
        long tmEnd = System.currentTimeMillis();&lt;br /&gt;
        System.out.println(tmEnd - tmStart);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    fillButton.setText(&amp;quot;Fill&amp;quot;);&lt;br /&gt;
    this.getContentPane().add(new JScrollPane(list1), BorderLayout.CENTER);&lt;br /&gt;
    this.getContentPane().add(fillButton, BorderLayout.SOUTH);&lt;br /&gt;
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class ListData extends AbstractListModel {&lt;br /&gt;
  String[] strings = new String[10000];&lt;br /&gt;
  public ListData() {&lt;br /&gt;
    for (int i = 0; i &amp;lt; 10000; i++) {&lt;br /&gt;
      strings[i] = &amp;quot;bob&amp;quot; + i;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public int getSize() {&lt;br /&gt;
    return strings.length;&lt;br /&gt;
  }&lt;br /&gt;
  public Object getElementAt(int index) {&lt;br /&gt;
    return strings[index];&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  extends DefaultListModel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
class MyListModel extends DefaultListModel {&lt;br /&gt;
  protected int[] count = new int[100];&lt;br /&gt;
  public Object getElementAt(int index) {&lt;br /&gt;
    if (index &amp;lt; 100) {&lt;br /&gt;
      count[index]++;&lt;br /&gt;
    }&lt;br /&gt;
    return super.elementAt(index);&lt;br /&gt;
  }&lt;br /&gt;
  public void dump() {&lt;br /&gt;
    for (int i = 0; i &amp;lt; 100; i++) {&lt;br /&gt;
      if (count[i] != 0) {&lt;br /&gt;
        System.out.println(i + &amp;quot;\t&amp;quot; + count[i] + &amp;quot;\t\t&amp;quot; + elementAt(i));&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class Main extends JFrame {&lt;br /&gt;
  MyListModel model = new MyListModel();&lt;br /&gt;
  public Main() {&lt;br /&gt;
    for (int i = 0; i &amp;lt; 25; i++) {&lt;br /&gt;
      model.addElement(&amp;quot;A&amp;quot; + i);&lt;br /&gt;
    }&lt;br /&gt;
    JList list = new JList(model);&lt;br /&gt;
    getContentPane().add(new JScrollPane(list), BorderLayout.CENTER);&lt;br /&gt;
    addWindowListener(new WindowAdapter() {&lt;br /&gt;
      public void windowClosing(WindowEvent e) {&lt;br /&gt;
        model.dump();&lt;br /&gt;
        System.exit(0);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    pack();&lt;br /&gt;
    setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String arg[]) {&lt;br /&gt;
    new Main();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Getting the Items in a JList Component ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    String[] items = { &amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot; };&lt;br /&gt;
    JList list = new JList(items);&lt;br /&gt;
    // Get number of items in the list&lt;br /&gt;
    int size = list.getModel().getSize(); // 4&lt;br /&gt;
    // Get all item objects&lt;br /&gt;
    for (int i = 0; i &amp;lt; size; i++) {&lt;br /&gt;
      Object item = list.getModel().getElementAt(i);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Insert an item at the beginning ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    DefaultListModel model = new DefaultListModel();&lt;br /&gt;
    JList list = new JList(model);&lt;br /&gt;
    int pos = 0;&lt;br /&gt;
    model.add(pos, &amp;quot;a&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  JList: ListModel and ListSelectionModel. The ListModel handles data. ListSelectionModel works with the GUI. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.event.MouseAdapter;&lt;br /&gt;
import java.awt.event.MouseEvent;&lt;br /&gt;
import javax.swing.BorderFactory;&lt;br /&gt;
import javax.swing.BoxLayout;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
import javax.swing.JOptionPane;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.ListSelectionModel;&lt;br /&gt;
public class List {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    final DefaultListModel model = new DefaultListModel();&lt;br /&gt;
    final JList list = new JList(model);&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.setTitle(&amp;quot;JList models&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    model.addElement(&amp;quot;A&amp;quot;);&lt;br /&gt;
    model.addElement(&amp;quot;B&amp;quot;);&lt;br /&gt;
    model.addElement(&amp;quot;C&amp;quot;);&lt;br /&gt;
    model.addElement(&amp;quot;D&amp;quot;);&lt;br /&gt;
    model.addElement(&amp;quot;E&amp;quot;);&lt;br /&gt;
    JPanel panel = new JPanel();&lt;br /&gt;
    panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));&lt;br /&gt;
    JPanel leftPanel = new JPanel();&lt;br /&gt;
    JPanel rightPanel = new JPanel();&lt;br /&gt;
    leftPanel.setLayout(new BorderLayout());&lt;br /&gt;
    rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS));&lt;br /&gt;
    list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);&lt;br /&gt;
    list.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));&lt;br /&gt;
    list.addMouseListener(new MouseAdapter() {&lt;br /&gt;
      public void mouseClicked(MouseEvent e) {&lt;br /&gt;
        if (e.getClickCount() == 2) {&lt;br /&gt;
          int index = list.locationToIndex(e.getPoint());&lt;br /&gt;
          Object item = model.getElementAt(index);&lt;br /&gt;
          String text = JOptionPane.showInputDialog(&amp;quot;Rename item&amp;quot;, item);&lt;br /&gt;
          String newitem = &amp;quot;&amp;quot;;&lt;br /&gt;
          if (text != null)&lt;br /&gt;
            newitem = text.trim();&lt;br /&gt;
          else&lt;br /&gt;
            return;&lt;br /&gt;
          if (!newitem.isEmpty()) {&lt;br /&gt;
            model.remove(index);&lt;br /&gt;
            model.add(index, newitem);&lt;br /&gt;
            ListSelectionModel selmodel = list.getSelectionModel();&lt;br /&gt;
            selmodel.setLeadSelectionIndex(index);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    leftPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));&lt;br /&gt;
    leftPanel.add(new JScrollPane(list));&lt;br /&gt;
    JButton removeall = new JButton(&amp;quot;Remove All&amp;quot;);&lt;br /&gt;
    JButton add = new JButton(&amp;quot;Add&amp;quot;);&lt;br /&gt;
    JButton rename = new JButton(&amp;quot;Rename&amp;quot;);&lt;br /&gt;
    JButton delete = new JButton(&amp;quot;Delete&amp;quot;);&lt;br /&gt;
    add.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent e) {&lt;br /&gt;
        String text = JOptionPane.showInputDialog(&amp;quot;Add a new item&amp;quot;);&lt;br /&gt;
        String item = null;&lt;br /&gt;
        if (text != null)&lt;br /&gt;
          item = text.trim();&lt;br /&gt;
        else&lt;br /&gt;
          return;&lt;br /&gt;
        if (!item.isEmpty())&lt;br /&gt;
          model.addElement(item);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    delete.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent event) {&lt;br /&gt;
        ListSelectionModel selmodel = list.getSelectionModel();&lt;br /&gt;
        int index = selmodel.getMinSelectionIndex();&lt;br /&gt;
        if (index &amp;gt;= 0)&lt;br /&gt;
          model.remove(index);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    rename.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent e) {&lt;br /&gt;
        ListSelectionModel selmodel = list.getSelectionModel();&lt;br /&gt;
        int index = selmodel.getMinSelectionIndex();&lt;br /&gt;
        if (index == -1)&lt;br /&gt;
          return;&lt;br /&gt;
        Object item = model.getElementAt(index);&lt;br /&gt;
        String text = JOptionPane.showInputDialog(&amp;quot;Rename item&amp;quot;, item);&lt;br /&gt;
        String newitem = null;&lt;br /&gt;
        if (text != null) {&lt;br /&gt;
          newitem = text.trim();&lt;br /&gt;
        } else&lt;br /&gt;
          return;&lt;br /&gt;
        if (!newitem.isEmpty()) {&lt;br /&gt;
          model.remove(index);&lt;br /&gt;
          model.add(index, newitem);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    removeall.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent e) {&lt;br /&gt;
        model.clear();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    rightPanel.add(add);&lt;br /&gt;
    rightPanel.add(rename);&lt;br /&gt;
    rightPanel.add(delete);&lt;br /&gt;
    rightPanel.add(removeall);&lt;br /&gt;
    rightPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20));&lt;br /&gt;
    panel.add(leftPanel);&lt;br /&gt;
    panel.add(rightPanel);&lt;br /&gt;
    f.add(panel);&lt;br /&gt;
    f.setSize(350, 250);&lt;br /&gt;
    f.setLocationRelativeTo(null);&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Methods are used to remove items ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    DefaultListModel model = new DefaultListModel();&lt;br /&gt;
    JList list = new JList(model);&lt;br /&gt;
    // Remove the first item&lt;br /&gt;
    int pos = 0;&lt;br /&gt;
    model.remove(pos);&lt;br /&gt;
    // Remove the last item&lt;br /&gt;
    pos = model.getSize() - 1;&lt;br /&gt;
    if (pos &amp;gt;= 0) {&lt;br /&gt;
      model.remove(pos);&lt;br /&gt;
    }&lt;br /&gt;
    // Remove all items&lt;br /&gt;
    model.clear();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Set method replaces an item ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    DefaultListModel model = new DefaultListModel();&lt;br /&gt;
    JList list = new JList(model);&lt;br /&gt;
    // Replace the 2nd item&lt;br /&gt;
    int pos = 1;&lt;br /&gt;
    model.set(pos, &amp;quot;b&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  SortedListModel: sortable JList ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.*;&lt;br /&gt;
import java.util.*;&lt;br /&gt;
class SortedListModel extends AbstractListModel {&lt;br /&gt;
  SortedSet&amp;lt;Object&amp;gt; model;&lt;br /&gt;
  public SortedListModel() {&lt;br /&gt;
    model = new TreeSet&amp;lt;Object&amp;gt;();&lt;br /&gt;
  }&lt;br /&gt;
  public int getSize() {&lt;br /&gt;
    return model.size();&lt;br /&gt;
  }&lt;br /&gt;
  public Object getElementAt(int index) {&lt;br /&gt;
    return model.toArray()[index];&lt;br /&gt;
  }&lt;br /&gt;
  public void add(Object element) {&lt;br /&gt;
    if (model.add(element)) {&lt;br /&gt;
      fireContentsChanged(this, 0, getSize());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
  public void addAll(Object elements[]) {&lt;br /&gt;
    Collection&amp;lt;Object&amp;gt; c = Arrays.asList(elements);&lt;br /&gt;
    model.addAll(c);&lt;br /&gt;
    fireContentsChanged(this, 0, getSize());&lt;br /&gt;
  }&lt;br /&gt;
  public void clear() {&lt;br /&gt;
    model.clear();&lt;br /&gt;
    fireContentsChanged(this, 0, getSize());&lt;br /&gt;
  }&lt;br /&gt;
  public boolean contains(Object element) {&lt;br /&gt;
    return model.contains(element);&lt;br /&gt;
  }&lt;br /&gt;
  public Object firstElement() {&lt;br /&gt;
    return model.first();&lt;br /&gt;
  }&lt;br /&gt;
  public Iterator iterator() {&lt;br /&gt;
    return model.iterator();&lt;br /&gt;
  }&lt;br /&gt;
  public Object lastElement() {&lt;br /&gt;
    return model.last();&lt;br /&gt;
  }&lt;br /&gt;
  public boolean removeElement(Object element) {&lt;br /&gt;
    boolean removed = model.remove(element);&lt;br /&gt;
    if (removed) {&lt;br /&gt;
      fireContentsChanged(this, 0, getSize());&lt;br /&gt;
    }&lt;br /&gt;
    return removed;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class JListLocationToIndexSample {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    SortedListModel model = new SortedListModel();&lt;br /&gt;
    &lt;br /&gt;
    model.add(&amp;quot;A&amp;quot;);&lt;br /&gt;
    model.add(&amp;quot;C&amp;quot;);&lt;br /&gt;
    model.add(&amp;quot;Z&amp;quot;);&lt;br /&gt;
    model.add(&amp;quot;B&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Selecting JList&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    &lt;br /&gt;
    JList jlist = new JList(model);&lt;br /&gt;
    JScrollPane scrollPane1 = new JScrollPane(jlist);&lt;br /&gt;
    frame.add(scrollPane1, BorderLayout.CENTER);&lt;br /&gt;
    frame.setSize(350, 200);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>