java中对列表的添加或删除操作
2016-07-23 19:16
447 查看
DocumentListener 监听机制,常常用来对文本的监听,也就三种方法
/**
*方法说明:实现DocumentListener接口,必需实现的方法,对文本输入时会调用
*/
public void insertUpdate(DocumentEvent e) {
enableButton();
}
/**
*<br>方法说明:实现DocumentListener接口,必需实现的方法,删除文本内容时会调用
*<br>输入参数:
*<br>返回类型:
*/
public void removeUpdate(DocumentEvent e) {
handleEmptyTextField(e);
}
/**
*<br>方法说明:实现DocumentListener接口,必需实现的方法,改变文本内容时会调用。
*<br>输入参数:
*<br>返回类型:
*/
public void changedUpdate(DocumentEvent e) {
if (!handleEmptyTextField(e)) {
enableButton();
}
}
附送一个小例子:
import javax.swing.*;
import javax.swing.event.*;
public class Main extends JPanel
{
JTextField jtf=new JTextField(10);
public Main()
{
jtf.getDocument().addDocumentListener(new Example());
add(jtf);
}
public static void main(String []args)
{
Main m=new Main();
JFrame jf=new JFrame();
jf.add(m);
jf.setVisible(true);
jf.pack();
}
}
class Example implements DocumentListener
{
@Override
public void insertUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
System.out.println("write");
}
@Override
public void removeUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
System.out.println("remove");
}
@Override
public void changedUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
System.out.println("change");
}
}
再送一个大例子:
/**
*方法说明:实现DocumentListener接口,必需实现的方法,对文本输入时会调用
*/
public void insertUpdate(DocumentEvent e) {
enableButton();
}
/**
*<br>方法说明:实现DocumentListener接口,必需实现的方法,删除文本内容时会调用
*<br>输入参数:
*<br>返回类型:
*/
public void removeUpdate(DocumentEvent e) {
handleEmptyTextField(e);
}
/**
*<br>方法说明:实现DocumentListener接口,必需实现的方法,改变文本内容时会调用。
*<br>输入参数:
*<br>返回类型:
*/
public void changedUpdate(DocumentEvent e) {
if (!handleEmptyTextField(e)) {
enableButton();
}
}
附送一个小例子:
import javax.swing.*;
import javax.swing.event.*;
public class Main extends JPanel
{
JTextField jtf=new JTextField(10);
public Main()
{
jtf.getDocument().addDocumentListener(new Example());
add(jtf);
}
public static void main(String []args)
{
Main m=new Main();
JFrame jf=new JFrame();
jf.add(m);
jf.setVisible(true);
jf.pack();
}
}
class Example implements DocumentListener
{
@Override
public void insertUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
System.out.println("write");
}
@Override
public void removeUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
System.out.println("remove");
}
@Override
public void changedUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
System.out.println("change");
}
}
再送一个大例子:
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class Main extends JPanel implements ListSelectionListener { private JList list; private DefaultListModel listModel; private static final String hireString = "添加"; private static final String fireString = "删除"; private JButton fireButton; private JTextField employeeName; public Main() { super(new BorderLayout()); //构建List的列表元素 listModel = new DefaultListModel(); listModel.addElement("Alan Sommerer"); listModel.addElement("Alison Huml"); listModel.addElement("Kathy Walrath"); listModel.addElement("Lisa Friendly"); listModel.addElement("Mary Campione"); listModel.addElement("Sharon Zakhour"); //创建一个List构件,并将列表元素添加到列表中 list = new JList(listModel); //设置选择模式为单选 list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //初始化选择索引在0的位置,即第一个元素 list.setSelectedIndex(0); list.addListSelectionListener(this); //设置列表可以同时看5个元素 list.setVisibleRowCount(5); //给列表添加一个滑动块 JScrollPane listScrollPane = new JScrollPane(list); JButton hireButton = new JButton(hireString); HireListener hireListener = new HireListener(hireButton); hireButton.setActionCommand(hireString); hireButton.addActionListener(hireListener); hireButton.setEnabled(false); fireButton = new JButton(fireString); fireButton.setActionCommand(fireString); fireButton.addActionListener(new FireListener()); employeeName = new JTextField(10); employeeName.addActionListener(hireListener); employeeName.getDocument().addDocumentListener(hireListener); String name = listModel.getElementAt( list.getSelectedIndex()).toString(); //创建一个面板 JPanel buttonPane = new JPanel(); buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.LINE_AXIS)); buttonPane.add(fireButton); buttonPane.add(Box.createHorizontalStrut(5)); buttonPane.add(new JSeparator(SwingConstants.VERTICAL)); buttonPane.add(Box.createHorizontalStrut(5)); buttonPane.add(employeeName); buttonPane.add(hireButton); buttonPane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); add(listScrollPane, BorderLayout.CENTER); add(buttonPane, BorderLayout.PAGE_END); } /** *<br>类说明:“添加”按钮监听 *<br>类描述:当点击“添加”按钮后,实现将元素添加到列表框中 */ class FireListener implements ActionListener { public void actionPerformed(ActionEvent e) { int index = list.getSelectedIndex(); listModel.remove(index); int size = listModel.getSize(); if (size == 0) { //如果没有了选择项,则是“删除”按钮实效 fireButton.setEnabled(false); } else { //选择了一个 if (index == listModel.getSize()) { //移除选项 index--; } list.setSelectedIndex(index); list.ensureIndexIsVisible(index); } } } /** *<br>类说明:“删除”按钮监听事件 *<br>类描述:实现删除列表元素 */ class HireListener implements ActionListener, DocumentListener { private boolean alreadyEnabled = false; private JButton button; public HireListener(JButton button) { this.button = button; } //必须实现 ActionListener. public void actionPerformed(ActionEvent e) { String name = employeeName.getText(); //如果输入空或有同名 if (name.equals("") || alreadyInList(name)) { Toolkit.getDefaultToolkit().beep(); employeeName.requestFocusInWindow(); employeeName.selectAll(); return; } int index = list.getSelectedIndex(); //获取选择项 if (index == -1) { //如果没有选择,就插入到第一个 index = 0; } else { //如果有选择,那么插入到选择项的后面 index++; } listModel.insertElementAt(employeeName.getText(), index); //重新设置文本 employeeName.requestFocusInWindow(); employeeName.setText(""); //选择新的元素,并显示出来 list.setSelectedIndex(index); list.ensureIndexIsVisible(index); } /** *<br>方法说明:检测是否在LIST中有重名元素 *<br>输入参数:String name 检测的名字 *<br>返回类型:boolean 布尔值,如果存在返回true */ protected boolean alreadyInList(String name) { return listModel.contains(name); } /** *<br>方法说明:实现DocumentListener接口,必需实现的方法 *<br>输入参数: *<br>返回类型: */ public void insertUpdate(DocumentEvent e) { enableButton(); } /** *<br>方法说明:实现DocumentListener接口,必需实现的方法 *<br>输入参数: *<br>返回类型: */ public void removeUpdate(DocumentEvent e) { handleEmptyTextField(e); } /** *<br>方法说明:实现DocumentListener接口,必需实现的方法 *<br>输入参数: *<br>返回类型: */ public void changedUpdate(DocumentEvent e) { if (!handleEmptyTextField(e)) { enableButton(); } } /** *<br>方法说明:按钮使能 *<br>输入参数: *<br>返回类型: */ private void enableButton() { if (!alreadyEnabled) { button.setEnabled(true); } } /** *<br>方法说明:实现DocumentListener接口,必需实现的方法,修改按钮的状态 *<br>输入参数: *<br>返回类型: */ private boolean handleEmptyTextField(DocumentEvent e) { if (e.getDocument().getLength() <= 0) { button.setEnabled(false); alreadyEnabled = false; return true; } return false; } } /** *<br>方法说明:实现ListSelectionListener接口,必需实现的方法 *<br>输入参数: *<br>返回类型: */ public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting() == false) { if (list.getSelectedIndex() == -1) { fireButton.setEnabled(false); } else { fireButton.setEnabled(true); } } } /** *<br>方法说明:主方法 *<br>输入参数: *<br>返回类型: */ public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); //创建一个窗体 JFrame frame = new JFrame("Main"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //创建一个面版 JComponent newContentPane = new Main(); newContentPane.setOpaque(true); frame.setContentPane(newContentPane); //显示窗体 frame.pack(); frame.setVisible(true); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树