ListSelectionDemo的valueChange

来源:互联网 发布:vbscript脚本语言java 编辑:程序博客网 时间:2024/06/06 01:16
/* * Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * *   - Redistributions of source code must retain the above copyright *     notice, this list of conditions and the following disclaimer. * *   - Redistributions in binary form must reproduce the above copyright *     notice, this list of conditions and the following disclaimer in the *     documentation and/or other materials provided with the distribution. * *   - Neither the name of Oracle or the names of its *     contributors may be used to endorse or promote products derived *     from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package Swing;/* * ListSelectionDemo.java requires no other files. */import javax.swing.*;import javax.swing.event.*;import javax.swing.table.*;import java.util.*;import java.awt.*;import java.awt.event.*;public class ListSelectionDemo extends JPanel {    JTextArea output;    JList list;     JTable table;    String newline = "\n";    ListSelectionModel listSelectionModel;    public ListSelectionDemo() {        super(new BorderLayout());        String[] listData = { "one", "two", "three", "four",                              "five", "six", "seven" };        String[] columnNames = { "French", "Spanish", "Italian" };        list = new JList(listData);        listSelectionModel = list.getSelectionModel();        listSelectionModel.addListSelectionListener(                new SharedListSelectionHandler());        JScrollPane listPane = new JScrollPane(list);        JPanel controlPane = new JPanel();        String[] modes = { "SINGLE_SELECTION",                           "SINGLE_INTERVAL_SELECTION",                           "MULTIPLE_INTERVAL_SELECTION" };        final JComboBox comboBox = new JComboBox(modes);        comboBox.setSelectedIndex(2);        comboBox.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                String newMode = (String)comboBox.getSelectedItem();                if (newMode.equals("SINGLE_SELECTION")) {                    listSelectionModel.setSelectionMode(                        ListSelectionModel.SINGLE_SELECTION);                } else if (newMode.equals("SINGLE_INTERVAL_SELECTION")) {                    listSelectionModel.setSelectionMode(                        ListSelectionModel.SINGLE_INTERVAL_SELECTION);                } else {                    listSelectionModel.setSelectionMode(                        ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);                }                output.append("----------"                              + "Mode: " + newMode                              + "----------" + newline);            }        });        controlPane.add(new JLabel("Selection mode:"));        controlPane.add(comboBox);        //Build output area.        output = new JTextArea(1, 10);        output.setEditable(false);        JScrollPane outputPane = new JScrollPane(output,                         ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,                         ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);        //Do the layout.        JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);        add(splitPane, BorderLayout.CENTER);        JPanel topHalf = new JPanel();        topHalf.setLayout(new BoxLayout(topHalf, BoxLayout.LINE_AXIS));        JPanel listContainer = new JPanel(new GridLayout(1,1));        listContainer.setBorder(BorderFactory.createTitledBorder(                                                "List"));        listContainer.add(listPane);            topHalf.setBorder(BorderFactory.createEmptyBorder(5,5,0,5));        topHalf.add(listContainer);        //topHalf.add(tableContainer);        topHalf.setMinimumSize(new Dimension(100, 50));        topHalf.setPreferredSize(new Dimension(100, 110));        splitPane.add(topHalf);        JPanel bottomHalf = new JPanel(new BorderLayout());        bottomHalf.add(controlPane, BorderLayout.PAGE_START);        bottomHalf.add(outputPane, BorderLayout.CENTER);        //XXX: next line needed if bottomHalf is a scroll pane:        //bottomHalf.setMinimumSize(new Dimension(400, 50));        bottomHalf.setPreferredSize(new Dimension(450, 135));        splitPane.add(bottomHalf);    }    /**     * Create the GUI and show it.  For thread safety,     * this method should be invoked from the     * event-dispatching thread.     */    private static void createAndShowGUI() {        //Create and set up the window.        JFrame frame = new JFrame("ListSelectionDemo");        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        //Create and set up the content pane.        ListSelectionDemo demo = new ListSelectionDemo();        demo.setOpaque(true);        frame.setContentPane(demo);        //Display the window.        frame.pack();        frame.setVisible(true);    }    public static void main(String[] args) {        //Schedule a job for the event-dispatching thread:        //creating and showing this application's GUI.        javax.swing.SwingUtilities.invokeLater(new Runnable() {            public void run() {                createAndShowGUI();            }        });    }    class SharedListSelectionHandler implements ListSelectionListener {        public void valueChanged(ListSelectionEvent e) {             ListSelectionModel lsm = (ListSelectionModel)e.getSource();            //System.out.printf("LeadSelectionIndex is %s%n",lsm.getLeadSelectionIndex());            output.append("LeadSelectionIndex is " + lsm.getLeadSelectionIndex() + "\n");                        int firstIndex = e.getFirstIndex();            int lastIndex = e.getLastIndex();            boolean isAdjusting = e.getValueIsAdjusting();             output.append("Event for indexes "                          + firstIndex + " - " + lastIndex                          + "; isAdjusting is " + isAdjusting                          + "; selected indexes:");            if (lsm.isSelectionEmpty()) {                output.append(" <none>");            } else {                // Find out which indexes are selected.                int minIndex = lsm.getMinSelectionIndex();                int maxIndex = lsm.getMaxSelectionIndex();                for (int i = minIndex; i <= maxIndex; i++) {                    if (lsm.isSelectedIndex(i)) {                        output.append(" " + i);                    }                }            }            output.append(newline);            output.setCaretPosition(output.getDocument().getLength());        }    }}

0 0
原创粉丝点击