`

实例056 - 用动态数组ArrayList保存学生姓名

 
阅读更多

ArrayList集合可以看做动态数组,可以随时向数组中添加和删除元素,如果要获取普通数组,还可以通过该类的toArray()方法获得。

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.AbstractListModel;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.ListModel;
import javax.swing.border.EmptyBorder;
import javax.swing.JScrollPane;
import javax.swing.JList;
import java.awt.FlowLayout;
import javax.swing.JButton;
import java.awt.Dimension;
import javax.swing.JLabel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.JPopupMenu;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JComboBox;

public class DynamicArray extends JFrame {
    
    private JPanel contentPane;
    private final JPanel panel = new JPanel();
    
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        try {
            UIManager
                    .setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (Throwable e) {
            e.printStackTrace();
        }
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    DynamicArray frame = new DynamicArray();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    
    /**
     * Create the frame.
     */
    public DynamicArray() {
        setTitle("\u7528\u52A8\u6001\u6570\u7EC4\u4FDD\u5B58\u5B66\u751F\u59D3\u540D");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 337, 269);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);
        
        JScrollPane scrollPane = new JScrollPane();
        contentPane.add(scrollPane, BorderLayout.CENTER);
        
        list = new JList();
        scrollPane.setViewportView(list);
        
        JPanel panel_1 = new JPanel();
        scrollPane.setColumnHeaderView(panel_1);
        
        JLabel label = new JLabel("\u5B66\u751F\u59D3\u540D\uFF1A");
        panel_1.add(label);
        
        textField = new JTextField();
        panel_1.add(textField);
        textField.setColumns(10);
        panel.setPreferredSize(new Dimension(100, 10));
        contentPane.add(panel, BorderLayout.EAST);
        panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
        
        JButton button = new JButton("\u6DFB\u52A0\u5B66\u751F");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                do_button_actionPerformed(e);
            }
        });
        panel.add(button);
        
        JButton button_1 = new JButton("\u5220\u9664\u5B66\u751F");
        button_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                do_button_1_actionPerformed(e);
            }
        });
        panel.add(button_1);
    }
    
    private ArrayList<String> arraylist = new ArrayList<String>();
    private JTextField textField;
    private JList list;
    
    protected void do_button_actionPerformed(ActionEvent e) {
        textField.requestFocusInWindow();
        textField.selectAll();// 选择文本框文本准备下次输入
        String text = textField.getText();// 获取用户输入姓名
        if (text.isEmpty())// 过滤为输入姓名的情况
            return;
        arraylist.add(text);// 把姓名添加到数组集合中
        replaceModel();// 把数组集合中内容显示到界面列表控件中
    }
    
    protected void do_button_1_actionPerformed(ActionEvent e) {
        Object value = list.getSelectedValue();// 获取列表控件的选择项
        arraylist.remove(value);// 从数组集合中移除用户的选择项
        replaceModel();// 把数组集合中内容显示到界面列表控件中
    }
    
    private void replaceModel() {
        // 为列表控件设置数据模型显示数组集合中的数据
        list.setModel(new AbstractListModel() {
            @Override
            public int getSize() {// 获取数组大小
                return arraylist.size();
            }
            
            @Override
            public Object getElementAt(int index) {// 获取指定索引元素
                return arraylist.get(index);
            }
        });
    }
}

 

 

  • 大小: 9.1 KB
分享到:
评论

相关推荐

    C#随即分组程序采用ArrayList数组编写

    接着,定义一个ArrayList实例,用于存储待分组的对象,例如学生的姓名或ID。这些数据可以先用List初始化,然后再转换为ArrayList。 ```csharp using System; using System.Collections; // 假设我们有以下数据 ...

    学生管理系统源码,包括学生类和学生管理类(逻辑处理)

    例如,可以使用ArrayList来动态存储学生对象,方便插入和删除操作。 - 查找算法:在查询学生信息时,可能需要实现二分查找、线性查找等算法,以高效地定位目标学生。 - 排序算法:如果需要按学号、姓名等排序学生...

    学生管理系统Java.docx

    - `ArrayList`是Java集合框架的一部分,它是一个动态数组,可以存储任意类型的对象。在这里,`ArrayList`被用作存储学生对象的容器。 4. **类设计**: - `Student`类包含了表示一个学生所需的基本属性:`id`(学号...

    学生管理系统源码1.0版.zip

    通过数组或更高级的集合框架(如ArrayList),系统能有效地管理大量学生信息,实现增删改查的基本功能。例如,添加一个新学生到系统,就是创建一个新的学生对象并将其插入到学生数组中;删除一个学生,就是找到对应...

    C#控制台学生成绩管理系统实训报告(含源代码)

    学生类的实例被存储在一个ArrayList动态数组中,这为动态管理学生信息提供了方便。为了提高用户体验,系统中使用了switch语句来实现功能的选择,并通过goto语句简化了返回主菜单的操作流程。此外,Console.Clear()...

    java----电子簿实例

    这通常需要用到数据结构,比如数组或集合框架中的ArrayList、LinkedList或HashMap。根据需求,我们可以选择合适的数据结构来优化性能和方便操作。 3. **文件输入/输出**: 为了持久化存储电子簿中的数据,我们需要...

    2、C#学生基本信息录入程序

    4. **集合与列表**:为了存储多个学生对象,开发者可能会使用`List&lt;T&gt;`或其他集合类,如`ArrayList`,来组织和操作多个学生实例。 5. **文件I/O**:为了持久化存储数据,程序可能使用C#的文件操作功能,如`...

    Java入门小实验:简易学生信息管理系统(窗体实现)

    如果希望将学生信息保存到磁盘并加载,可以使用FileInputStream和FileOutputStream读写文件,或者使用ObjectInputStream和ObjectOutputStream进行对象序列化和反序列化,以便持久化数据。 总的来说,这个Java入门小...

    VB.NET实例 作业小组选择器

    例如,添加多个TextBox用于输入学生姓名,一个ListBox或DataGridView用于显示分组结果,以及多个Button执行不同操作。 2. **数据处理**:在处理数据时,可能需要将学生名字存储到数组或列表中。可以使用ArrayList或...

    基于Java实现学生模拟选课系统【100011987】

    在这个课程设计中,还会涉及到基本的文件操作,如读取和保存学生的选课信息。Java提供了丰富的I/O流类库,可以用来处理这些需求。例如,使用`FileWriter`和`BufferedWriter`写入文件,`FileReader`和`BufferedReader...

    java学生管理系统(没用数据库)

    数组可以提供固定大小的存储空间,而ArrayList则允许动态扩展,更适合于数量不确定的学生数据。 4. **面向对象编程**:Java是面向对象的语言,因此学生信息很可能被封装在`Student`类中,包含了学号、姓名、兴趣等...

    一个Java作业,纯控制台学生成绩信息管理系统.zip

    4. **数据结构**:为了存储和管理学生数据,可能使用了数组、链表或集合(如ArrayList或LinkedList)。集合框架是Java中处理数据的重要工具。 5. **异常处理**:在处理文件操作或用户输入时,异常处理(try-catch-...

    java课程设计 netbeans设计 学生信息管理 附带报告

    1. 数据结构与数据存储:学生信息被存储在一个数据结构中,可能是数组、链表或者更复杂的集合类如ArrayList或LinkedList。数据结构的选择取决于系统需求和性能优化考虑。 2. 类与对象:Java是面向对象的编程语言,...

    简单实现Java版学生管理系统

    - 使用字符串数组`name`和`grade`存储学生姓名和成绩,初始容量为100,可以根据实际需求调整。 5. **功能实现**: - **添加学生**:通过`textName`和`textGrade`获取用户输入的姓名和成绩,然后将数据保存到数组...

    数据结构课程设计:手机通通讯录模拟,24点扑克牌游戏)

    一种可能的方式是用数组或ArrayList来保存四张牌,每张牌可以表示为一个整数。然后,我们需要设计一套高效的算法,如深度优先搜索(DFS)或回溯法,尝试所有可能的运算顺序和组合,判断是否能得到24。这会涉及到递归...

    一个简单的学生成绩系统

    这可能是一个二维数组、ArrayList、LinkedList或者更复杂的集合结构,如HashMap或TreeMap,用于关联学生ID与对应的成绩。 2. **用户界面**:JFrame将承载整个应用的界面元素。用户可以通过输入框输入学生信息,表格...

    JAVA版的成绩查询系统 非图形界面

    - **数据结构**:为了存储和处理成绩,可能使用数组、列表(ArrayList)或集合框架中的其他数据结构来保存学生和课程信息。 - **输入/输出流**:JAVA的System.in用于接收用户在控制台的输入,System.out.println()...

    iStudentManager:简易学生管理系统

    ArrayList是Java集合框架中的一员,它是一个动态数组,允许存储和操作可变大小的对象列表。在iStudentManager的早期版本中,开发团队选择了ArrayList作为主要的数据结构来存储学生信息。ArrayList提供了添加、删除、...

    java课程设计(贪食蛇 俄罗斯方块 个人信息助理工具 家庭理财工具 图书管理系统 人事档案管理系统 学生成绩管理系统)

    使用Java集合框架(如ArrayList、HashMap)存储和管理财务记录,同时可能需要处理货币格式和汇率转换。 5. **图书管理系统**:系统可能包括图书添加、借阅、归还等功能,涉及数据库操作、用户权限管理。Java JDBC...

    Java 上机练习题

    3. **数组和集合**:熟悉数组的创建、遍历和排序,以及集合框架中的ArrayList、LinkedList、HashSet、HashMap等容器的使用。例如,编写一个程序,读取用户输入的一组数字,存储到数组或集合中,并进行排序或去重。 ...

Global site tag (gtag.js) - Google Analytics