Table

 avatar
unknown
java
2 years ago
4.4 kB
6
Indexable
package Swing;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Vector;

public class Table extends JFrame {

    public Table() {
        addControls();
        addEvents();
    }

    private DefaultTableModel dtm;
    private JTable tblMain;
    private JTextField txtId, txtName;
    private JTextArea txtNote;
    private JButton btnSave;

    private void addControls() {
        Container con = getContentPane();

        JPanel pnMain = new JPanel();
        pnMain.setLayout(new BoxLayout(pnMain, BoxLayout.Y_AXIS));

        JPanel pnTable = new JPanel();
        pnTable.setLayout(new BorderLayout());
        dtm = new DefaultTableModel();
        dtm.addColumn("MSSV");
        dtm.addColumn("Họ tên");
        dtm.addColumn("Ghi chú");
        tblMain = new JTable(dtm);
        JScrollPane scr = new JScrollPane(tblMain, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        pnTable.add(scr, BorderLayout.CENTER);
        pnMain.add(pnTable);


        JPanel pnTextField = new JPanel();
        pnTextField.setLayout(new BoxLayout(pnTextField, BoxLayout.Y_AXIS));

        JPanel pnId = new JPanel();
        JLabel lblId = new JLabel("MSSV*", SwingConstants.RIGHT);
        txtId = new JTextField(20);
        pnId.add(lblId);
        pnId.add(txtId);

        JPanel pnName = new JPanel();
        JLabel lblName = new JLabel("Họ tên*", SwingConstants.RIGHT);
        txtName = new JTextField(20);
        pnName.add(lblName);
        pnName.add(txtName);

        JPanel pnNote = new JPanel();
        JLabel lblNote = new JLabel("Ghi chú", SwingConstants.RIGHT);
        txtNote = new JTextArea(5, 20);
        pnNote.add(lblNote);
        pnNote.add(txtNote);

        pnTextField.add(pnId);
        pnTextField.add(pnName);
        pnTextField.add(pnNote);

        lblId.setPreferredSize(lblNote.getPreferredSize());
        lblName.setPreferredSize(lblNote.getPreferredSize());

        pnMain.add(pnTextField);

        JPanel pnButton = new JPanel();
        btnSave = new JButton("Save");
        pnButton.add(btnSave);
        pnMain.add(pnButton);

        con.add(pnMain);
    }

    private void addEvents() {
        btnSave.addActionListener(e -> {
            String id = txtId.getText();
            String name = txtName.getText();
            String note = txtNote.getText();

            if (id.trim().length() == 0 || name.trim().length() == 0) {
                JOptionPane.showMessageDialog(null, "Please enter id and name");
                return;
            }

            Vector<String> vec = new Vector<String>();
            vec.add(id);
            vec.add(name);
            vec.add(note);
            dtm.addRow(vec);

            txtId.setText("");
            txtName.setText("");
            txtNote.setText("");
        });

        tblMain.addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {
                processClickTable();
            }

            @Override
            public void mousePressed(MouseEvent e) {

            }

            @Override
            public void mouseReleased(MouseEvent e) {

            }

            @Override
            public void mouseEntered(MouseEvent e) {

            }

            @Override
            public void mouseExited(MouseEvent e) {

            }
        });
    }

    private void processClickTable() {
        int row = tblMain.getSelectedRow();
        if (row > -1) {
            String id = tblMain.getValueAt(row, 0) + "";
            String name = tblMain.getValueAt(row, 1) + "";
            String note = tblMain.getValueAt(row, 2) + "";
            new EditTable(id, name, note).showWindow();

            tblMain.setValueAt(EditTable.id, row, 0);
            tblMain.setValueAt(EditTable.name, row, 1);
            tblMain.setValueAt(EditTable.note, row, 2);
        }
    }

    public void showWindow() {
        this.setTitle("Hế lô");
        this.setSize(500, 500);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        new Table().showWindow();
    }
}
Editor is loading...