Java實驗--基於Swing的簡單的歌曲資訊管理系統(四)

來源:互聯網
上載者:User

標籤: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的簡單的歌曲資訊管理系統(四)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.