原创不易,转载请注明出处。

  上一篇《Java实验--基于Swing的简单的歌曲信息管理系统(三) 》中,我们绘制了登录、注册和管理员主界面,本篇主要讲解歌曲管理界面。第一次涉及到对表格的操作,参见的教材上的代码,具体代码如下:

package test.swing;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;

public class ExampleFrame_06 extends JFrame {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private DefaultTableModel tableModel;// 定义表格模型对象
    private JTable table;// 定义表格对象
    private JTextField aTextField;
    private JTextField bTextField;
    
    public static void main(String args[]) {
        ExampleFrame_06 frame = new ExampleFrame_06();
        frame.setVisible(true);
    }
    
    public ExampleFrame_06() {
        super();
        setTitle("维护表格模型");
        setBounds(100, 100, 500, 375);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final JScrollPane scrollPane = new JScrollPane();
        getContentPane().add(scrollPane, BorderLayout.CENTER);
        String[] columnNames = { "A", "B" };// 定义表格列名数组
        String[][] tableValues = { { "A1", "B1" }, { "A2", "B2" },
                { "A3", "B3" } };// 定义表格数据数组
        // 创建指定表格列名和表格数据的表格模型
        tableModel = new DefaultTableModel(tableValues, columnNames);
        
        table = new JTable(tableModel);// 创建指定表格模型的表格
//        table.setRowSorter(new TableRowSorter(tableModel));// 设置表格的排序器
        // 设置表格的选择模式为单选
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        // 为表格添加鼠标事件监听器
        table.addMouseListener(new MouseAdapter() {
            // 发生了点击事件
            public void mouseClicked(MouseEvent e) {
                // 获得被选中行的索引
                int selectedRow = table.getSelectedRow();
                // 从表格模型中获得指定单元格的值
                Object oa = tableModel.getValueAt(selectedRow, 0);
                // 从表格模型中获得指定单元格的值
                Object ob = tableModel.getValueAt(selectedRow, 1);
                aTextField.setText(oa.toString());// 将值赋值给文本框
                bTextField.setText(ob.toString());// 将值赋值给文本框
            }
        });
        scrollPane.setViewportView(table);
        final JPanel panel = new JPanel();
        getContentPane().add(panel, BorderLayout.SOUTH);
        panel.add(new JLabel("A:"));
        aTextField = new JTextField("A4", 10);
        panel.add(aTextField);
        panel.add(new JLabel("B:"));
        bTextField = new JTextField("B4", 10);
        panel.add(bTextField);
        final JButton addButton = new JButton("添加");
        addButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String[] rowValues = { aTextField.getText(),
                        bTextField.getText() };// 创建表格行数组
                tableModel.addRow(rowValues);// 向表格模型中添加一行
                int rowCount = table.getRowCount() + 1;
                aTextField.setText("A" + rowCount);
                bTextField.setText("B" + rowCount);
            }
        });
        panel.add(addButton);
        final JButton updButton = new JButton("修改");
        updButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int selectedRow = table.getSelectedRow();// 获得被选中行的索引
                if (selectedRow != -1) {// 判断是否存在被选中行
                    tableModel.setValueAt(aTextField.getText(),
                            selectedRow, 0);// 修改表格模型当中的指定值
                    tableModel.setValueAt(bTextField.getText(),
                            selectedRow, 1);// 修改表格模型当中的指定值
                }
            }
        });
        panel.add(updButton);
        final JButton delButton = new JButton("删除");
        delButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int selectedRow = table.getSelectedRow();// 获得被选中行的索引
                if (selectedRow != -1)// 判断是否存在被选中行
                    // 从表格模型当中删除指定行
                    tableModel.removeRow(selectedRow);
            }
        });
        panel.add(delButton);
    }
}
View Code

相关文章:

  • 2021-08-26
  • 2021-12-27
  • 2021-11-27
  • 2021-07-12
  • 2021-07-16
  • 2022-01-09
  • 2021-12-19
  • 2021-04-29
猜你喜欢
  • 2022-01-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-01
  • 2022-12-23
  • 2021-11-08
相关资源
相似解决方案