码迷,mamicode.com
首页 > 编程语言 > 详细

Java实验--基于Swing的简单的歌曲信息管理系统(四)

时间:2017-12-14 03:58:21      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:count()   就会   文本   简单   使用   eve   jtable   long   绘制   

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

  上一篇《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

   其实,这里的难点就是如何显示数据,根据教材的代码,能够大致模仿写出,然后就根据就把后台的数据显示出来就好了。为了实现让表格里面的行为不可编辑的状态,所以自己定义一个类,继承至DefaultTableMode,重写了isCellEditable方法,设置为了false。其他的都没有变。如果当时静下心再想想,可能就会重写很多的方法(还好这些在用户管理里面做了),使用的时候也会更简单,代码也会更少。

  其它的部分还有就是根据条件搜索,下面的JRadioButton和搜索框中显示的提示消息相对应等,之前考虑的是点击添加、删除、修改按钮,是弹出一个新的窗体来进行,无奈当时试了几次也不行(还好用户管理里面是这样实现的),只有模仿书上面的例子来做了,在表格的下面多增加了一排,里面包含了歌曲信息的输入框和增加、修改、删除的按钮,模仿例子来实现的。

  先来看设计图:

  

Java实验--基于Swing的简单的歌曲信息管理系统(四)

标签:count()   就会   文本   简单   使用   eve   jtable   long   绘制   

原文地址:http://www.cnblogs.com/meiqing/p/8035267.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!