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

📄 listselectiondemo.java

📁 Shows how to use all list selection modes, using a list selection listener that s shared between a t
💻 JAVA
字号:
/* * ListSelectionDemo.java is a 1.4 example * that 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" };        String[][] tableData = {{"un",     "uno",     "uno"     },                                {"deux",   "dos",     "due"     },                                {"trois",  "tres",    "tre"     },                                { "quatre", "cuatro",  "quattro"},                                { "cinq",   "cinco",   "cinque" },                                { "six",    "seis",    "sei"    },                                { "sept",   "siete",   "sette"  } };        list = new JList(listData);        listSelectionModel = list.getSelectionModel();        listSelectionModel.addListSelectionListener(                new SharedListSelectionHandler());        JScrollPane listPane = new JScrollPane(list);        table = new JTable(tableData, columnNames);        table.setSelectionModel(listSelectionModel);        JScrollPane tablePane = new JScrollPane(table);        //Build control area (use default FlowLayout).        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);        JPanel tableContainer = new JPanel(new GridLayout(1,1));        tableContainer.setBorder(BorderFactory.createTitledBorder(                                                "Table"));        tableContainer.add(tablePane);        tablePane.setPreferredSize(new Dimension(300, 100));        topHalf.setBorder(BorderFactory.createEmptyBorder(5,5,0,5));        topHalf.add(listContainer);        topHalf.add(tableContainer);        topHalf.setMinimumSize(new Dimension(400, 50));        topHalf.setPreferredSize(new Dimension(400, 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() {        //Make sure we have nice window decorations.        JFrame.setDefaultLookAndFeelDecorated(true);        //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();            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());        }    }}

⌨️ 快捷键说明

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