<?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_by_API%2Fjavax.swing%2FListSelectionModel</id>
		<title>Java by API/javax.swing/ListSelectionModel - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_by_API%2Fjavax.swing%2FListSelectionModel"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/javax.swing/ListSelectionModel&amp;action=history"/>
		<updated>2026-04-21T10:45:18Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_by_API/javax.swing/ListSelectionModel&amp;diff=657&amp;oldid=prev</id>
		<title> в 17:43, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/javax.swing/ListSelectionModel&amp;diff=657&amp;oldid=prev"/>
				<updated>2010-05-31T17:43:48Z</updated>
		
		<summary type="html">&lt;p&gt;&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;Версия 17:43, 31 мая 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>
			</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_by_API/javax.swing/ListSelectionModel&amp;diff=658&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_by_API/javax.swing/ListSelectionModel&amp;diff=658&amp;oldid=prev"/>
				<updated>2010-05-31T14:19:05Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== ListSelectionModel: getMaxSelectionIndex() ==&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;
&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTable;&lt;br /&gt;
import javax.swing.ListSelectionModel;&lt;br /&gt;
import javax.swing.event.ListSelectionEvent;&lt;br /&gt;
import javax.swing.event.ListSelectionListener;&lt;br /&gt;
class SharedListSelectionHandler implements ListSelectionListener {&lt;br /&gt;
  public void valueChanged(ListSelectionEvent e) {&lt;br /&gt;
    ListSelectionModel lsm = (ListSelectionModel) e.getSource();&lt;br /&gt;
    int firstIndex = e.getFirstIndex();&lt;br /&gt;
    int lastIndex = e.getLastIndex();&lt;br /&gt;
    boolean isAdjusting = e.getValueIsAdjusting();&lt;br /&gt;
    System.out.println(&amp;quot;Event for indexes &amp;quot; + firstIndex + &amp;quot; - &amp;quot; + lastIndex + &amp;quot;; isAdjusting is &amp;quot;&lt;br /&gt;
        + isAdjusting + &amp;quot;; selected indexes:&amp;quot;);&lt;br /&gt;
    if (lsm.isSelectionEmpty()) {&lt;br /&gt;
      System.out.println(&amp;quot; &amp;lt;none&amp;gt;&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      // Find out which indexes are selected.&lt;br /&gt;
      int minIndex = lsm.getMinSelectionIndex();&lt;br /&gt;
      int maxIndex = lsm.getMaxSelectionIndex();&lt;br /&gt;
      for (int i = minIndex; i &amp;lt;= maxIndex; i++) {&lt;br /&gt;
        if (lsm.isSelectedIndex(i)) {&lt;br /&gt;
          System.out.println(&amp;quot; &amp;quot; + i);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class Main {&lt;br /&gt;
  static String labels[] = { &amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;F&amp;quot;, &amp;quot;G&amp;quot; };&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Modifying Model&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    String[] columnNames = { &amp;quot;French&amp;quot;, &amp;quot;Spanish&amp;quot;, &amp;quot;Italian&amp;quot; };&lt;br /&gt;
    String[][] tableData = { { &amp;quot;un&amp;quot;, &amp;quot;uno&amp;quot;, &amp;quot;uno&amp;quot; }, { &amp;quot;deux&amp;quot;, &amp;quot;dos&amp;quot;, &amp;quot;due&amp;quot; },&lt;br /&gt;
        { &amp;quot;trois&amp;quot;, &amp;quot;tres&amp;quot;, &amp;quot;tre&amp;quot; }, { &amp;quot;quatre&amp;quot;, &amp;quot;cuatro&amp;quot;, &amp;quot;quattro&amp;quot; },&lt;br /&gt;
        { &amp;quot;cinq&amp;quot;, &amp;quot;cinco&amp;quot;, &amp;quot;cinque&amp;quot; }, { &amp;quot;six&amp;quot;, &amp;quot;seis&amp;quot;, &amp;quot;sei&amp;quot; }, { &amp;quot;sept&amp;quot;, &amp;quot;siete&amp;quot;, &amp;quot;sette&amp;quot; } };&lt;br /&gt;
    JTable table = new JTable(tableData, columnNames);&lt;br /&gt;
    table.getSelectionModel().addListSelectionListener(new SharedListSelectionHandler());&lt;br /&gt;
    JScrollPane scrollPane1 = new JScrollPane(table);&lt;br /&gt;
    frame.add(scrollPane1, BorderLayout.CENTER);&lt;br /&gt;
    frame.setSize(640, 300);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&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;
== ListSelectionModel: getMinSelectionIndex() ==&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;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.GridLayout;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.JCheckBox;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTable;&lt;br /&gt;
import javax.swing.ListSelectionModel;&lt;br /&gt;
import javax.swing.event.ListSelectionEvent;&lt;br /&gt;
import javax.swing.event.ListSelectionListener;&lt;br /&gt;
import javax.swing.table.AbstractTableModel;&lt;br /&gt;
import javax.swing.table.TableModel;&lt;br /&gt;
public class MainClass extends JFrame {&lt;br /&gt;
  public MainClass() {&lt;br /&gt;
    super(&amp;quot;Selection Model Test&amp;quot;);&lt;br /&gt;
    setSize(450, 350);&lt;br /&gt;
    setDefaultCloseOperation(EXIT_ON_CLOSE);&lt;br /&gt;
    TableModel tm = new AbstractTableModel() {&lt;br /&gt;
      public int getRowCount() {&lt;br /&gt;
        return 10;&lt;br /&gt;
      }&lt;br /&gt;
      public int getColumnCount() {&lt;br /&gt;
        return 10;&lt;br /&gt;
      }&lt;br /&gt;
      public Object getValueAt(int r, int c) {&lt;br /&gt;
        return &amp;quot;0&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    final JTable jt = new JTable(tm);&lt;br /&gt;
    JScrollPane jsp = new JScrollPane(jt);&lt;br /&gt;
    getContentPane().add(jsp, BorderLayout.CENTER);&lt;br /&gt;
    JPanel controlPanel, buttonPanel, columnPanel, rowPanel;&lt;br /&gt;
    buttonPanel = new JPanel();&lt;br /&gt;
    final JCheckBox cellBox, columnBox, rowBox;&lt;br /&gt;
    cellBox = new JCheckBox(&amp;quot;Cells&amp;quot;, jt.getCellSelectionEnabled());&lt;br /&gt;
    columnBox = new JCheckBox(&amp;quot;Columns&amp;quot;, jt.getColumnSelectionAllowed());&lt;br /&gt;
    rowBox = new JCheckBox(&amp;quot;Rows&amp;quot;, jt.getRowSelectionAllowed());&lt;br /&gt;
    &lt;br /&gt;
    cellBox.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent ae) {&lt;br /&gt;
        jt.setCellSelectionEnabled(cellBox.isSelected());&lt;br /&gt;
        columnBox.setSelected(jt.getColumnSelectionAllowed());&lt;br /&gt;
        rowBox.setSelected(jt.getRowSelectionAllowed());&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    columnBox.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent ae) {&lt;br /&gt;
        jt.setColumnSelectionAllowed(columnBox.isSelected());&lt;br /&gt;
        cellBox.setSelected(jt.getCellSelectionEnabled());&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    rowBox.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent ae) {&lt;br /&gt;
        jt.setRowSelectionAllowed(rowBox.isSelected());&lt;br /&gt;
        cellBox.setSelected(jt.getCellSelectionEnabled());&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    buttonPanel.add(new JLabel(&amp;quot;Selections allowed:&amp;quot;));&lt;br /&gt;
    buttonPanel.add(cellBox);&lt;br /&gt;
    buttonPanel.add(columnBox);&lt;br /&gt;
    buttonPanel.add(rowBox);&lt;br /&gt;
    columnPanel = new JPanel();&lt;br /&gt;
    ListSelectionModel csm = jt.getColumnModel().getSelectionModel();&lt;br /&gt;
    JLabel columnCounter = new JLabel(&amp;quot;Selected Column Indices:&amp;quot;);&lt;br /&gt;
    csm.addListSelectionListener(new SelectionDebugger(columnCounter, csm));&lt;br /&gt;
    columnPanel.add(new JLabel(&amp;quot;Selected columns:&amp;quot;));&lt;br /&gt;
    columnPanel.add(columnCounter);&lt;br /&gt;
    rowPanel = new JPanel();&lt;br /&gt;
    ListSelectionModel rsm = jt.getSelectionModel();&lt;br /&gt;
    JLabel rowCounter = new JLabel(&amp;quot;Selected Row Indices:&amp;quot;);&lt;br /&gt;
    rsm.addListSelectionListener(new SelectionDebugger(rowCounter, rsm));&lt;br /&gt;
    rowPanel.add(new JLabel(&amp;quot;Selected rows:&amp;quot;));&lt;br /&gt;
    rowPanel.add(rowCounter);&lt;br /&gt;
    controlPanel = new JPanel(new GridLayout(0, 1));&lt;br /&gt;
    controlPanel.add(buttonPanel);&lt;br /&gt;
    controlPanel.add(columnPanel);&lt;br /&gt;
    controlPanel.add(rowPanel);&lt;br /&gt;
    getContentPane().add(controlPanel, BorderLayout.SOUTH);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    MainClass se = new MainClass();&lt;br /&gt;
    se.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public class SelectionDebugger implements ListSelectionListener {&lt;br /&gt;
    JLabel debugger;&lt;br /&gt;
    ListSelectionModel model;&lt;br /&gt;
    public SelectionDebugger(JLabel target, ListSelectionModel lsm) {&lt;br /&gt;
      debugger = target;&lt;br /&gt;
      model = lsm;&lt;br /&gt;
    }&lt;br /&gt;
    public void valueChanged(ListSelectionEvent lse) {&lt;br /&gt;
      if (!lse.getValueIsAdjusting()) {&lt;br /&gt;
        StringBuffer buf = new StringBuffer();&lt;br /&gt;
        int[] selection = getSelectedIndices(model.getMinSelectionIndex(), model&lt;br /&gt;
            .getMaxSelectionIndex());&lt;br /&gt;
        if (selection.length == 0) {&lt;br /&gt;
          buf.append(&amp;quot;none&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
          for (int i = 0; i &amp;lt; selection.length - 1; i++) {&lt;br /&gt;
            buf.append(selection[i]);&lt;br /&gt;
            buf.append(&amp;quot;, &amp;quot;);&lt;br /&gt;
          }&lt;br /&gt;
          buf.append(selection[selection.length - 1]);&lt;br /&gt;
        }&lt;br /&gt;
        debugger.setText(buf.toString());&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    protected int[] getSelectedIndices(int start, int stop) {&lt;br /&gt;
      if ((start == -1) || (stop == -1)) {&lt;br /&gt;
        return new int[0];&lt;br /&gt;
      }&lt;br /&gt;
      int guesses[] = new int[stop - start + 1];&lt;br /&gt;
      int index = 0;&lt;br /&gt;
      for (int i = start; i &amp;lt;= stop; i++) {&lt;br /&gt;
        if (model.isSelectedIndex(i)) {&lt;br /&gt;
          guesses[index++] = i;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      int realthing[] = new int[index];&lt;br /&gt;
      System.arraycopy(guesses, 0, realthing, 0, index);&lt;br /&gt;
      return realthing;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&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;
== ListSelectionModel: isSelectedIndex(int index) ==&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;
&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTable;&lt;br /&gt;
import javax.swing.ListSelectionModel;&lt;br /&gt;
import javax.swing.event.ListSelectionEvent;&lt;br /&gt;
import javax.swing.event.ListSelectionListener;&lt;br /&gt;
class SharedListSelectionHandler implements ListSelectionListener {&lt;br /&gt;
  public void valueChanged(ListSelectionEvent e) {&lt;br /&gt;
    ListSelectionModel lsm = (ListSelectionModel) e.getSource();&lt;br /&gt;
    int firstIndex = e.getFirstIndex();&lt;br /&gt;
    int lastIndex = e.getLastIndex();&lt;br /&gt;
    boolean isAdjusting = e.getValueIsAdjusting();&lt;br /&gt;
    System.out.println(&amp;quot;Event for indexes &amp;quot; + firstIndex + &amp;quot; - &amp;quot; + lastIndex + &amp;quot;; isAdjusting is &amp;quot;&lt;br /&gt;
        + isAdjusting + &amp;quot;; selected indexes:&amp;quot;);&lt;br /&gt;
    if (lsm.isSelectionEmpty()) {&lt;br /&gt;
      System.out.println(&amp;quot; &amp;lt;none&amp;gt;&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      // Find out which indexes are selected.&lt;br /&gt;
      int minIndex = lsm.getMinSelectionIndex();&lt;br /&gt;
      int maxIndex = lsm.getMaxSelectionIndex();&lt;br /&gt;
      for (int i = minIndex; i &amp;lt;= maxIndex; i++) {&lt;br /&gt;
        if (lsm.isSelectedIndex(i)) {&lt;br /&gt;
          System.out.println(&amp;quot; &amp;quot; + i);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class Main {&lt;br /&gt;
  static String labels[] = { &amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;F&amp;quot;, &amp;quot;G&amp;quot; };&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Modifying Model&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    String[] columnNames = { &amp;quot;French&amp;quot;, &amp;quot;Spanish&amp;quot;, &amp;quot;Italian&amp;quot; };&lt;br /&gt;
    String[][] tableData = { { &amp;quot;un&amp;quot;, &amp;quot;uno&amp;quot;, &amp;quot;uno&amp;quot; }, { &amp;quot;deux&amp;quot;, &amp;quot;dos&amp;quot;, &amp;quot;due&amp;quot; },&lt;br /&gt;
        { &amp;quot;trois&amp;quot;, &amp;quot;tres&amp;quot;, &amp;quot;tre&amp;quot; }, { &amp;quot;quatre&amp;quot;, &amp;quot;cuatro&amp;quot;, &amp;quot;quattro&amp;quot; },&lt;br /&gt;
        { &amp;quot;cinq&amp;quot;, &amp;quot;cinco&amp;quot;, &amp;quot;cinque&amp;quot; }, { &amp;quot;six&amp;quot;, &amp;quot;seis&amp;quot;, &amp;quot;sei&amp;quot; }, { &amp;quot;sept&amp;quot;, &amp;quot;siete&amp;quot;, &amp;quot;sette&amp;quot; } };&lt;br /&gt;
    JTable table = new JTable(tableData, columnNames);&lt;br /&gt;
    table.getSelectionModel().addListSelectionListener(new SharedListSelectionHandler());&lt;br /&gt;
    JScrollPane scrollPane1 = new JScrollPane(table);&lt;br /&gt;
    frame.add(scrollPane1, BorderLayout.CENTER);&lt;br /&gt;
    frame.setSize(640, 300);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&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;
== ListSelectionModel: isSelectionEmpty() ==&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;
&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTable;&lt;br /&gt;
import javax.swing.ListSelectionModel;&lt;br /&gt;
import javax.swing.event.ListSelectionEvent;&lt;br /&gt;
import javax.swing.event.ListSelectionListener;&lt;br /&gt;
class SharedListSelectionHandler implements ListSelectionListener {&lt;br /&gt;
  public void valueChanged(ListSelectionEvent e) {&lt;br /&gt;
    ListSelectionModel lsm = (ListSelectionModel) e.getSource();&lt;br /&gt;
    int firstIndex = e.getFirstIndex();&lt;br /&gt;
    int lastIndex = e.getLastIndex();&lt;br /&gt;
    boolean isAdjusting = e.getValueIsAdjusting();&lt;br /&gt;
    System.out.println(&amp;quot;Event for indexes &amp;quot; + firstIndex + &amp;quot; - &amp;quot; + lastIndex + &amp;quot;; isAdjusting is &amp;quot;&lt;br /&gt;
        + isAdjusting + &amp;quot;; selected indexes:&amp;quot;);&lt;br /&gt;
    if (lsm.isSelectionEmpty()) {&lt;br /&gt;
      System.out.println(&amp;quot; &amp;lt;none&amp;gt;&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      // Find out which indexes are selected.&lt;br /&gt;
      int minIndex = lsm.getMinSelectionIndex();&lt;br /&gt;
      int maxIndex = lsm.getMaxSelectionIndex();&lt;br /&gt;
      for (int i = minIndex; i &amp;lt;= maxIndex; i++) {&lt;br /&gt;
        if (lsm.isSelectedIndex(i)) {&lt;br /&gt;
          System.out.println(&amp;quot; &amp;quot; + i);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class Main {&lt;br /&gt;
  static String labels[] = { &amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;F&amp;quot;, &amp;quot;G&amp;quot; };&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Modifying Model&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    String[] columnNames = { &amp;quot;French&amp;quot;, &amp;quot;Spanish&amp;quot;, &amp;quot;Italian&amp;quot; };&lt;br /&gt;
    String[][] tableData = { { &amp;quot;un&amp;quot;, &amp;quot;uno&amp;quot;, &amp;quot;uno&amp;quot; }, { &amp;quot;deux&amp;quot;, &amp;quot;dos&amp;quot;, &amp;quot;due&amp;quot; },&lt;br /&gt;
        { &amp;quot;trois&amp;quot;, &amp;quot;tres&amp;quot;, &amp;quot;tre&amp;quot; }, { &amp;quot;quatre&amp;quot;, &amp;quot;cuatro&amp;quot;, &amp;quot;quattro&amp;quot; },&lt;br /&gt;
        { &amp;quot;cinq&amp;quot;, &amp;quot;cinco&amp;quot;, &amp;quot;cinque&amp;quot; }, { &amp;quot;six&amp;quot;, &amp;quot;seis&amp;quot;, &amp;quot;sei&amp;quot; }, { &amp;quot;sept&amp;quot;, &amp;quot;siete&amp;quot;, &amp;quot;sette&amp;quot; } };&lt;br /&gt;
    JTable table = new JTable(tableData, columnNames);&lt;br /&gt;
    table.getSelectionModel().addListSelectionListener(new SharedListSelectionHandler());&lt;br /&gt;
    JScrollPane scrollPane1 = new JScrollPane(table);&lt;br /&gt;
    frame.add(scrollPane1, BorderLayout.CENTER);&lt;br /&gt;
    frame.setSize(640, 300);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&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;
== ListSelectionModel: setAnchorSelectionIndex(int index) ==&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;
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;
public class Main {&lt;br /&gt;
  static String labels[] = { &amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;F&amp;quot;, &amp;quot;G&amp;quot; };&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Modifying Model&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    JList jlist = new JList(new String[]{&amp;quot;A&amp;quot;,&amp;quot;B&amp;quot;,&amp;quot;C&amp;quot;});&lt;br /&gt;
    &lt;br /&gt;
    jlist.getSelectionModel().setAnchorSelectionIndex(0);   &lt;br /&gt;
    jlist.getSelectionModel().setLeadSelectionIndex(2);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    JScrollPane scrollPane1 = new JScrollPane(jlist);&lt;br /&gt;
    frame.add(scrollPane1, BorderLayout.CENTER);&lt;br /&gt;
    frame.setSize(640, 300);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&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;
== ListSelectionModel: setLeadSelectionIndex(int index) ==&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;
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;
public class Main {&lt;br /&gt;
  static String labels[] = { &amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;F&amp;quot;, &amp;quot;G&amp;quot; };&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Modifying Model&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    JList jlist = new JList(new String[]{&amp;quot;A&amp;quot;,&amp;quot;B&amp;quot;,&amp;quot;C&amp;quot;});&lt;br /&gt;
    &lt;br /&gt;
    jlist.getSelectionModel().setAnchorSelectionIndex(0);   &lt;br /&gt;
    jlist.getSelectionModel().setLeadSelectionIndex(2);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    JScrollPane scrollPane1 = new JScrollPane(jlist);&lt;br /&gt;
    frame.add(scrollPane1, BorderLayout.CENTER);&lt;br /&gt;
    frame.setSize(640, 300);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&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;
== ListSelectionModel.SINGLE_INTERVAL_SELECTION ==&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;
&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;
/*&lt;br /&gt;
 * ListDataEventDemo.java requires the Java Look and Feel Graphics&lt;br /&gt;
 * Repository (jlfgr-1_0.jar).  You can download this file from&lt;br /&gt;
 * http://java.sun.ru/developer/techDocs/hi/repository/&lt;br /&gt;
 * Put it in the class path using one of the following commands&lt;br /&gt;
 * (assuming jlfgr-1_0.jar is in a subdirectory named jars):&lt;br /&gt;
 *&lt;br /&gt;
 *   java -cp .;jars/jlfgr-1_0.jar ListDataEventDemo [Microsoft Windows]&lt;br /&gt;
 *   java -cp .:jars/jlfgr-1_0.jar ListDataEventDemo [UNIX]&lt;br /&gt;
 */&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.GridLayout;&lt;br /&gt;
import java.awt.Insets;&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.DefaultListModel;&lt;br /&gt;
import javax.swing.ImageIcon;&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.JSplitPane;&lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.ListSelectionModel;&lt;br /&gt;
import javax.swing.event.ListDataEvent;&lt;br /&gt;
import javax.swing.event.ListDataListener;&lt;br /&gt;
import javax.swing.event.ListSelectionEvent;&lt;br /&gt;
import javax.swing.event.ListSelectionListener;&lt;br /&gt;
public class Main extends JPanel implements ListSelectionListener {&lt;br /&gt;
  private JList list;&lt;br /&gt;
  private DefaultListModel listModel;&lt;br /&gt;
  private static final String addString = &amp;quot;Add&amp;quot;;&lt;br /&gt;
  private static final String deleteString = &amp;quot;Delete&amp;quot;;&lt;br /&gt;
  private static final String upString = &amp;quot;Move up&amp;quot;;&lt;br /&gt;
  private static final String downString = &amp;quot;Move down&amp;quot;;&lt;br /&gt;
  private JButton addButton;&lt;br /&gt;
  private JButton deleteButton;&lt;br /&gt;
  private JButton upButton;&lt;br /&gt;
  private JButton downButton;&lt;br /&gt;
  private JTextField nameField;&lt;br /&gt;
  private JTextArea log;&lt;br /&gt;
  static private String newline = &amp;quot;\n&amp;quot;;&lt;br /&gt;
  public Main() {&lt;br /&gt;
    super(new BorderLayout());&lt;br /&gt;
    // Create and populate the list model.&lt;br /&gt;
    listModel = new DefaultListModel();&lt;br /&gt;
    listModel.addElement(&amp;quot;Whistler, Canada&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;Jackson Hole, Wyoming&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;Squaw Valley, California&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;Telluride, Colorado&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;Taos, New Mexico&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;Snowbird, Utah&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;Chamonix, France&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;Banff, Canada&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;Arapahoe Basin, Colorado&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;Kirkwood, California&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;Sun Valley, Idaho&amp;quot;);&lt;br /&gt;
    listModel.addListDataListener(new MyListDataListener());&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_INTERVAL_SELECTION);&lt;br /&gt;
    list.setSelectedIndex(0);&lt;br /&gt;
    list.addListSelectionListener(this);&lt;br /&gt;
    JScrollPane listScrollPane = new JScrollPane(list);&lt;br /&gt;
    // Create the list-modifying buttons.&lt;br /&gt;
    addButton = new JButton(addString);&lt;br /&gt;
    addButton.setActionCommand(addString);&lt;br /&gt;
    addButton.addActionListener(new AddButtonListener());&lt;br /&gt;
    deleteButton = new JButton(deleteString);&lt;br /&gt;
    deleteButton.setActionCommand(deleteString);&lt;br /&gt;
    deleteButton.addActionListener(new DeleteButtonListener());&lt;br /&gt;
    ImageIcon icon = createImageIcon(&amp;quot;Up16&amp;quot;);&lt;br /&gt;
    if (icon != null) {&lt;br /&gt;
      upButton = new JButton(icon);&lt;br /&gt;
      upButton.setMargin(new Insets(0, 0, 0, 0));&lt;br /&gt;
    } else {&lt;br /&gt;
      upButton = new JButton(&amp;quot;Move up&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    upButton.setToolTipText(&amp;quot;Move the currently selected list item higher.&amp;quot;);&lt;br /&gt;
    upButton.setActionCommand(upString);&lt;br /&gt;
    upButton.addActionListener(new UpDownListener());&lt;br /&gt;
    icon = createImageIcon(&amp;quot;Down16&amp;quot;);&lt;br /&gt;
    if (icon != null) {&lt;br /&gt;
      downButton = new JButton(icon);&lt;br /&gt;
      downButton.setMargin(new Insets(0, 0, 0, 0));&lt;br /&gt;
    } else {&lt;br /&gt;
      downButton = new JButton(&amp;quot;Move down&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    downButton.setToolTipText(&amp;quot;Move the currently selected list item lower.&amp;quot;);&lt;br /&gt;
    downButton.setActionCommand(downString);&lt;br /&gt;
    downButton.addActionListener(new UpDownListener());&lt;br /&gt;
    JPanel upDownPanel = new JPanel(new GridLayout(2, 1));&lt;br /&gt;
    upDownPanel.add(upButton);&lt;br /&gt;
    upDownPanel.add(downButton);&lt;br /&gt;
    // Create the text field for entering new names.&lt;br /&gt;
    nameField = new JTextField(15);&lt;br /&gt;
    nameField.addActionListener(new AddButtonListener());&lt;br /&gt;
    String name = listModel.getElementAt(list.getSelectedIndex()).toString();&lt;br /&gt;
    nameField.setText(name);&lt;br /&gt;
    // Create a control panel, using the default FlowLayout.&lt;br /&gt;
    JPanel buttonPane = new JPanel();&lt;br /&gt;
    buttonPane.add(nameField);&lt;br /&gt;
    buttonPane.add(addButton);&lt;br /&gt;
    buttonPane.add(deleteButton);&lt;br /&gt;
    buttonPane.add(upDownPanel);&lt;br /&gt;
    // Create the log for reporting list data events.&lt;br /&gt;
    log = new JTextArea(10, 20);&lt;br /&gt;
    JScrollPane logScrollPane = new JScrollPane(log);&lt;br /&gt;
    // Create a split pane for the log and the list.&lt;br /&gt;
    JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,&lt;br /&gt;
        listScrollPane, logScrollPane);&lt;br /&gt;
    splitPane.setResizeWeight(0.5);&lt;br /&gt;
    // Put everything together.&lt;br /&gt;
    add(buttonPane, BorderLayout.PAGE_START);&lt;br /&gt;
    add(splitPane, BorderLayout.CENTER);&lt;br /&gt;
  }&lt;br /&gt;
  class MyListDataListener implements ListDataListener {&lt;br /&gt;
    public void contentsChanged(ListDataEvent e) {&lt;br /&gt;
      log.append(&amp;quot;contentsChanged: &amp;quot; + e.getIndex0() + &amp;quot;, &amp;quot; + e.getIndex1()&lt;br /&gt;
          + newline);&lt;br /&gt;
      log.setCaretPosition(log.getDocument().getLength());&lt;br /&gt;
    }&lt;br /&gt;
    public void intervalAdded(ListDataEvent e) {&lt;br /&gt;
      log.append(&amp;quot;intervalAdded: &amp;quot; + e.getIndex0() + &amp;quot;, &amp;quot; + e.getIndex1()&lt;br /&gt;
          + newline);&lt;br /&gt;
      log.setCaretPosition(log.getDocument().getLength());&lt;br /&gt;
    }&lt;br /&gt;
    public void intervalRemoved(ListDataEvent e) {&lt;br /&gt;
      log.append(&amp;quot;intervalRemoved: &amp;quot; + e.getIndex0() + &amp;quot;, &amp;quot; + e.getIndex1()&lt;br /&gt;
          + newline);&lt;br /&gt;
      log.setCaretPosition(log.getDocument().getLength());&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  class DeleteButtonListener implements ActionListener {&lt;br /&gt;
    public void actionPerformed(ActionEvent e) {&lt;br /&gt;
      /*&lt;br /&gt;
       * This method can be called only if there&amp;quot;s a valid selection, so go&lt;br /&gt;
       * ahead and remove whatever&amp;quot;s selected.&lt;br /&gt;
       */&lt;br /&gt;
      ListSelectionModel lsm = list.getSelectionModel();&lt;br /&gt;
      int firstSelected = lsm.getMinSelectionIndex();&lt;br /&gt;
      int lastSelected = lsm.getMaxSelectionIndex();&lt;br /&gt;
      listModel.removeRange(firstSelected, lastSelected);&lt;br /&gt;
      int size = listModel.size();&lt;br /&gt;
      if (size == 0) {&lt;br /&gt;
        // List is empty: disable delete, up, and down buttons.&lt;br /&gt;
        deleteButton.setEnabled(false);&lt;br /&gt;
        upButton.setEnabled(false);&lt;br /&gt;
        downButton.setEnabled(false);&lt;br /&gt;
      } else {&lt;br /&gt;
        // Adjust the selection.&lt;br /&gt;
        if (firstSelected == listModel.getSize()) {&lt;br /&gt;
          // Removed item in last position.&lt;br /&gt;
          firstSelected--;&lt;br /&gt;
        }&lt;br /&gt;
        list.setSelectedIndex(firstSelected);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /** A listener shared by the text field and add button. */&lt;br /&gt;
  class AddButtonListener implements ActionListener {&lt;br /&gt;
    public void actionPerformed(ActionEvent e) {&lt;br /&gt;
      if (nameField.getText().equals(&amp;quot;&amp;quot;)) {&lt;br /&gt;
        // User didn&amp;quot;t type in a name...&lt;br /&gt;
        Toolkit.getDefaultToolkit().beep();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      int index = list.getSelectedIndex();&lt;br /&gt;
      int size = listModel.getSize();&lt;br /&gt;
      // If no selection or if item in last position is selected,&lt;br /&gt;
      // add the new one to end of list, and select new one.&lt;br /&gt;
      if (index == -1 || (index + 1 == size)) {&lt;br /&gt;
        listModel.addElement(nameField.getText());&lt;br /&gt;
        list.setSelectedIndex(size);&lt;br /&gt;
        // Otherwise insert the new one after the current selection,&lt;br /&gt;
        // and select new one.&lt;br /&gt;
      } else {&lt;br /&gt;
        listModel.insertElementAt(nameField.getText(), index + 1);&lt;br /&gt;
        list.setSelectedIndex(index + 1);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  // Listen for clicks on the up and down arrow buttons.&lt;br /&gt;
  class UpDownListener implements ActionListener {&lt;br /&gt;
    public void actionPerformed(ActionEvent e) {&lt;br /&gt;
      // This method can be called only when&lt;br /&gt;
      // there&amp;quot;s a valid selection,&lt;br /&gt;
      // so go ahead and move the list item.&lt;br /&gt;
      int moveMe = list.getSelectedIndex();&lt;br /&gt;
      if (e.getActionCommand().equals(upString)) {&lt;br /&gt;
        // UP ARROW BUTTON&lt;br /&gt;
        if (moveMe != 0) {&lt;br /&gt;
          // not already at top&lt;br /&gt;
          swap(moveMe, moveMe - 1);&lt;br /&gt;
          list.setSelectedIndex(moveMe - 1);&lt;br /&gt;
          list.ensureIndexIsVisible(moveMe - 1);&lt;br /&gt;
        }&lt;br /&gt;
      } else {&lt;br /&gt;
        // DOWN ARROW BUTTON&lt;br /&gt;
        if (moveMe != listModel.getSize() - 1) {&lt;br /&gt;
          // not already at bottom&lt;br /&gt;
          swap(moveMe, moveMe + 1);&lt;br /&gt;
          list.setSelectedIndex(moveMe + 1);&lt;br /&gt;
          list.ensureIndexIsVisible(moveMe + 1);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  // Swap two elements in the list.&lt;br /&gt;
  private void swap(int a, int b) {&lt;br /&gt;
    Object aObject = listModel.getElementAt(a);&lt;br /&gt;
    Object bObject = listModel.getElementAt(b);&lt;br /&gt;
    listModel.set(a, bObject);&lt;br /&gt;
    listModel.set(b, aObject);&lt;br /&gt;
  }&lt;br /&gt;
  // Listener method for list selection changes.&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 delete, up, and down buttons.&lt;br /&gt;
        deleteButton.setEnabled(false);&lt;br /&gt;
        upButton.setEnabled(false);&lt;br /&gt;
        downButton.setEnabled(false);&lt;br /&gt;
        nameField.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
      } else if (list.getSelectedIndices().length &amp;gt; 1) {&lt;br /&gt;
        // Multiple selection: disable up and down buttons.&lt;br /&gt;
        deleteButton.setEnabled(true);&lt;br /&gt;
        upButton.setEnabled(false);&lt;br /&gt;
        downButton.setEnabled(false);&lt;br /&gt;
      } else {&lt;br /&gt;
        // Single selection: permit all operations.&lt;br /&gt;
        deleteButton.setEnabled(true);&lt;br /&gt;
        upButton.setEnabled(true);&lt;br /&gt;
        downButton.setEnabled(true);&lt;br /&gt;
        nameField.setText(list.getSelectedValue().toString());&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /** Returns an ImageIcon, or null if the path was invalid. */&lt;br /&gt;
  protected static ImageIcon createImageIcon(String imageName) {&lt;br /&gt;
    String imgLocation = &amp;quot;toolbarButtonGraphics/navigation/&amp;quot; + imageName&lt;br /&gt;
        + &amp;quot;.gif&amp;quot;;&lt;br /&gt;
    java.net.URL imageURL = Main.class.getResource(imgLocation);&lt;br /&gt;
    if (imageURL == null) {&lt;br /&gt;
      System.err.println(&amp;quot;Resource not found: &amp;quot; + imgLocation);&lt;br /&gt;
      return null;&lt;br /&gt;
    } else {&lt;br /&gt;
      return new ImageIcon(imageURL);&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;ListDataEventDemo&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 Main();&lt;br /&gt;
    newContentPane.setOpaque(true); // content panes must be opaque&lt;br /&gt;
    frame.setContentPane(newContentPane);&lt;br /&gt;
    // Don&amp;quot;t let the content pane get too small.&lt;br /&gt;
    // (Works if the Java look and feel provides&lt;br /&gt;
    // the window decorations.)&lt;br /&gt;
    newContentPane.setMinimumSize(new Dimension(newContentPane&lt;br /&gt;
        .getPreferredSize().width, 100));&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;
}&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;
== ListSelectionModel.SINGLE_SELECTION ==&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;
import java.awt.BorderLayout;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTable;&lt;br /&gt;
import javax.swing.ListSelectionModel;&lt;br /&gt;
import javax.swing.table.AbstractTableModel;&lt;br /&gt;
import javax.swing.table.TableModel;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(final String args[]) {&lt;br /&gt;
    final Object rows[][] = { { &amp;quot;one&amp;quot;, &amp;quot;1&amp;quot; }, { &amp;quot;two&amp;quot;, &amp;quot;2&amp;quot; },&lt;br /&gt;
        { &amp;quot;three&amp;quot;, &amp;quot;3&amp;quot; } };&lt;br /&gt;
    final String headers[] = { &amp;quot;English&amp;quot;, &amp;quot;Digit&amp;quot; };&lt;br /&gt;
    &lt;br /&gt;
    TableModel fixedColumnModel = new AbstractTableModel() {&lt;br /&gt;
      public int getColumnCount() {&lt;br /&gt;
        return 2;&lt;br /&gt;
      }&lt;br /&gt;
      public String getColumnName(int column) {&lt;br /&gt;
        return headers[column];&lt;br /&gt;
      }&lt;br /&gt;
      public int getRowCount() {&lt;br /&gt;
        return 3;&lt;br /&gt;
      }&lt;br /&gt;
      public Object getValueAt(int row, int column) {&lt;br /&gt;
        return rows[row][column];&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Scrollless Table&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    JTable table = new JTable(fixedColumnModel);&lt;br /&gt;
    &lt;br /&gt;
    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);&lt;br /&gt;
    &lt;br /&gt;
    frame.add(new JScrollPane(table), BorderLayout.CENTER);&lt;br /&gt;
    frame.setSize(300, 150);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&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;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>