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

📄 listdataeventdemo.java

📁 《java事件处理指南》一书的代码,好东西
💻 JAVA
字号:
import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;public class ListDataEventDemo extends JFrame implements ActionListener{   private JButton button;   private JTextField jtf;   private JList list;   private DefaultListModel model;   public ListDataEventDemo()    {/*  A JList object is created by first initializing a DefaultListModel  *//*  with a list of names.  The DefaultListModel registers a             *//*  ListDataListener.                                                   */      model = new DefaultListModel();      model.addElement("Mark");      model.addElement("Maria");      model.addElement("Scott");      model.addElement("Diana");      model.addElement("Stephanie");      model.addListDataListener(new ListDataHandler());      list = new JList(model);      list.setVisibleRowCount(7);      button = new JButton("Add");      button.setBorder(BorderFactory.createRaisedBevelBorder());      button.addActionListener(this);      jtf = new JTextField(15);      jtf.setBorder(BorderFactory.createLineBorder(Color.black));      JPanel centerPanel = new JPanel();      centerPanel.add(new JScrollPane(list,                 ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,                 ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED));      JPanel southPanel = new JPanel();      southPanel.add(jtf);      southPanel.add(button);      getContentPane().add(centerPanel, BorderLayout.CENTER);      getContentPane().add(southPanel, BorderLayout.SOUTH);      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      setBounds(100, 100, 300, 300);      setVisible(true);   }/*  When the "Add" button is pressed, the text in the JTextField is  *//*  added as an element to the JList.                                */   public void actionPerformed(ActionEvent event)   {      if ( jtf.getText().length() != 0 )      {         model.addElement(jtf.getText());      }   }/*  The ListDataListener is implemented as an inner class.  Whenever   *//*  an element is added to the list, a ListDataEvent is generated and  *//*  sent to the intervalAdded() method.  This method checks to see if  *//*  the element is already in the list.  If it is, the element is      *//*  removed.  This action generates another ListDataEvent that is      *//*  sent to the intervalRemoved() method.  This method displays a      *//*  message dialog informing the user that the name is already part    *//*  of the list.                                                       */   class ListDataHandler implements ListDataListener   {      public void intervalAdded(ListDataEvent event)      {         for(int i=0; i<event.getIndex0(); ++i)         {            String element = (String)model.elementAt(i);            String newElement = (String)model.elementAt(event.getIndex0());            if ( newElement.equals(element) )            {               model.removeElementAt(event.getIndex0());               break;            }         }         jtf.setText("");      }      public void intervalRemoved(ListDataEvent event)      {         JOptionPane.showMessageDialog(list, "Name already in list");      }      public void contentsChanged(ListDataEvent event) {}   }   public static void main(String args[])    {      ListDataEventDemo demo = new ListDataEventDemo();   }}

⌨️ 快捷键说明

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