📄 listdataeventdemo.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 + -