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

📄 listdemo.java

📁 企业内部管理系统
💻 JAVA
字号:
package viewtuba1;

import java.awt.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.*;
import javax.swing.event.*;

public class ListDemo extends JPanel implements ListSelectionListener {
	static JFrame frame;

	static JComponent newContentPane;

	private JList list;

	private DefaultListModel listModel;

	private static final String hireString = "新建卡号与密码";

	private static final String fireString = "删除卡号与密码";

	private JButton fireButton;

	private JTextField employeeName;

	public ListDemo() {
		super(new BorderLayout());

		// 构建List的列表元素
		listModel = new DefaultListModel();
		BufferedReader in;
		try {
			in = new BufferedReader(new FileReader("Info.csv"));

			String sq = new String();
			sq = in.readLine();
			while (sq != null) {
				listModel.addElement(sq);
				sq = in.readLine();
			}
			in.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

		// 创建一个List构件,并将列表元素添加到列表中
		list = new JList(listModel);
		// 设置选择模式为单选
		list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		// 初始化选择索引在0的位置,即第一个元素
		list.setSelectedIndex(0);
		list.addListSelectionListener(this);
		// 设置列表可以同时看5个元素
		list.setVisibleRowCount(10);
		// 给列表添加一个滑动块
		JScrollPane listScrollPane = new JScrollPane(list);

		JButton hireButton = new JButton(hireString);
		HireListener hireListener = new HireListener(hireButton);
		hireButton.setActionCommand(hireString);
		hireButton.addActionListener(hireListener);
		hireButton.setEnabled(false);

		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));

		fireButton = new JButton(fireString);
		fireButton.setActionCommand(fireString);
		fireButton.addActionListener(new FireListener());
		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);
	}

	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);
			}
		}
	}

	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);
			// StringBuffer temp = new StringBuffer();
			// BufferedReader ine;
			// BufferedWriter bw = null;
			// try {
			// File f = new File("Info.csv");
			// if (!f.exists())
			// f.createNewFile();
			// String rec = null;
			// ine = new BufferedReader(new FileReader("Info.csv"));
			// rec = ine.readLine();
			// while (rec != null) {
			// temp.append(rec);
			// bw = new BufferedWriter(new FileWriter(f, false));
			// bw.write(temp.toString());
			// rec = ine.readLine();
			// }
			// ine.close();
			// bw.close();
			//
			// } catch (IOException eo) {
			// eo.printStackTrace();
			// }
		}

		// 检测是否在LIST中有重名元素
		protected boolean alreadyInList(String name) {
			return listModel.contains(name);
		}

		// 实现DocumentListener接口
		public void insertUpdate(DocumentEvent e) {
			enableButton();
		}

		public void removeUpdate(DocumentEvent e) {
			handleEmptyTextField(e);
		}

		public void changedUpdate(DocumentEvent e) {
			if (!handleEmptyTextField(e)) {
				enableButton();
			}
		}

		// 按钮使能
		private void enableButton() {
			if (!alreadyEnabled) {
				button.setEnabled(true);
			}
		}

		private boolean handleEmptyTextField(DocumentEvent e) {
			if (e.getDocument().getLength() <= 0) {
				button.setEnabled(false);
				alreadyEnabled = false;
				return true;
			}
			return false;
		}
	}

	// 实现ListSelectionListener接口
	public void valueChanged(ListSelectionEvent e) {
		if (e.getValueIsAdjusting() == false) {

			if (list.getSelectedIndex() == -1) {
				fireButton.setEnabled(false);

			} else {
				fireButton.setEnabled(true);
			}
		}
	}

	public static void main(String[] args) {

		frame.setDefaultLookAndFeelDecorated(true);

		// 创建一个窗体
		frame = new JFrame("登录信息管理系统");
//		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.dispose();

		// 创建一个面版
		newContentPane = new ListDemo();
		newContentPane.setOpaque(true);
		frame.setContentPane(newContentPane);

		// 显示窗体
		frame.pack();
		frame.setVisible(true);
	}

	public static JFrame getFrame() {
		return frame;
	}

	public static JComponent getNewContentPane() {
		return newContentPane;
	}
}

⌨️ 快捷键说明

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