“MỌI SỰ CỐ GẮNG CHƯA CHẮC ĐÃ GẶT HÁI ĐƯỢC KẾT QUẢ NHƯNG MỖI KẾT QUẢ ĐẠT ĐƯỢC CHẮC CHẮN LÀ CẢ MỘT QUÁ TRÌNH CỐ GẮNG”

Gradle Java Desktop Application và SQLite

Thứ hai - 21/03/2022 22:39

Gradle Java Desktop Application và SQLITE.

Gradle Java Desktop Application và SQLite

settings.gradle

rootProject.name = 'javadbsqlite'
include('app')
project(":app").name = "GradleJavaSQLLITEDB"

build.gradle

plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    id 'application'
}

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(8)) //Yêu cầu từ Java 8 trở lên
        vendor = JvmVendorSpec.ADOPTOPENJDK
    }
}

compileJava {options.encoding = "UTF-8"}   
compileTestJava {options.encoding = "UTF-8"}
tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

repositories {
    // Use Maven Central for resolving dependencies.
    mavenCentral()
}

dependencies {
    // Use JUnit Jupiter for testing.
    // testImplementation 'org.junit.jupiter:junit-jupiter:5.7.2'

    // This dependency is used by the application.
    // implementation 'com.google.guava:guava:30.1.1-jre'
    runtimeOnly 'org.xerial:sqlite-jdbc:3.36.0.3'
}
mainClassName = 'javadbsqlite.frmMain'
application {
    // Define the main class for the application.
    mainClass = mainClassName
}

jar {     
    manifest {      
        attributes( 'Main-Class': mainClassName)                   
    }
    from {
        duplicatesStrategy = DuplicatesStrategy.INCLUDE
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

tasks.named('test') {
    // Use JUnit Platform for unit tests.
    useJUnitPlatform()
}

frmMain.java

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package javadbsqlite;

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import java.io.File;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.text.ParseException;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
import javax.swing.table.JTableHeader;
import javax.swing.text.JTextComponent;

/**
 *
 * @author admin
 */
public class frmMain extends javax.swing.JFrame {

    private final String javaversion;
    private int id = -1;
    private JLabel lbldbname = new JLabel("Tên cơ sở dữ liệu:", JLabel.LEFT);
    private JComboBox cbodbname = new JComboBox();
    private JButton btnOpenDatabase = new JButton("Open Database");
    private JButton btnDeleteDatabase = new JButton("Delete Database");
    private JButton btnCloseDatabase = new JButton("Close Database");
    private JButton btnAdd = new JButton("Add");
    private JButton btnSave = new JButton("Save");
    private JButton btnDelete = new JButton("Delete");
    private JButton btnClose = new JButton("Close");
    private JScrollPane scrollPane = new JScrollPane();
    private DefaultTableModel dm = new javax.swing.table.DefaultTableModel() {
        @Override
        public Class<?> getColumnClass(int column) {
            switch (column) {
                case 0:
                    return Integer.class;
                case 1:
                    return String.class;
                case 2:
                    return Float.class;
                default:
                    return String.class;
            }
        }

        @Override
        public boolean isCellEditable(int row, int column) {
            if (column == 0) {
                return false;
            } else {
                return false;
            }
        }
    };
    private JTable table = new JTable(dm) {
        @Override
        public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
            Component component = super.prepareRenderer(renderer, row, column);
            int rendererWidth = component.getPreferredSize().width;
            TableColumn tableColumn = getColumnModel().getColumn(column);
            tableColumn.setPreferredWidth(Math.max(rendererWidth + getIntercellSpacing().width, tableColumn.getPreferredWidth()));
            return component;
        }
    };

    private final JLabel lblname = new JLabel("Name:", JLabel.LEFT);
    private final JTextField txtname = new JTextField();
    private final JLabel lblmoney = new JLabel("Money:", JLabel.LEFT);
    private final JTextField txtmoney = new JTextField();
    private final String fileseparator = System.getProperty("file.separator");
    private final File fileFolder = new File("Databases");
    private final String filedbType = ".db";
    private Connection conn = null;
    private int dbindex = -1;
    private boolean dbmoney = false;
    private String valuedbname = "";

    private void SUM(JTable table, int column) {
        if (table.getRowCount() < 1) {
            return;
        }
        NumberFormat format = DecimalFormat.getInstance();
        format.setGroupingUsed(true);
        format.setMinimumFractionDigits(0);
        float sum = 0;
        int row = 0, rowcout = table.getRowCount();
        try {

            for (row = 0; row < rowcout; row++) {
                sum = sum + format.parse(table.getValueAt(row, column).toString()).floatValue();
            }
            dm.insertRow(row, new Object[]{" ", "Cộng:", sum});
        } catch (ParseException e) {

        }
    }

    private String getFileName(String S) {
        int index = S.lastIndexOf(".");
        if (index > -1) {
            S = S.substring(0, index);
        }
        return S;
    }

    private void loaddbname() {
        if (!fileFolder.exists()) {
            fileFolder.mkdir();
        }
        File[] listOfFiles = fileFolder.listFiles();
        if (listOfFiles.length > 0) {
            String files = null, name = "";
            for (int i = 0; i < listOfFiles.length; i++) {
                if (listOfFiles[i].isFile()) {
                    files = listOfFiles[i].getName();
                    if (files.endsWith(filedbType) || files.endsWith(filedbType.toUpperCase())) {
                        name = getFileName(files);
                        if (((DefaultComboBoxModel) cbodbname.getModel()).getIndexOf(name) == -1) {
                            cbodbname.addItem(name);
                        }
                        if (name.toLowerCase().equals("money")) {
                            dbmoney = true;
                        }
                    }
                }
            }
        } else {
            cbodbname.removeAllItems();
            cbodbname.addItem("money");
        }
    }

    private void OpenDatabase() {
        try {
            String value = this.valuedbname;
            Class.forName("org.sqlite.JDBC");
            File filecurent = new File(fileFolder.getCanonicalPath().concat(fileseparator).concat(cbodbname.getSelectedItem().toString().concat(filedbType)));
            String dbURL = "jdbc:sqlite:".concat(filecurent.getCanonicalPath());
            if (!filecurent.getParentFile().exists()) {
                filecurent.mkdir();
            }
            conn = DriverManager.getConnection(dbURL);
            if (conn != null) {
                btnOpenDatabase.setEnabled(false);
                btnCloseDatabase.setEnabled(true);
                btnDeleteDatabase.setEnabled(false);
                btnAdd.setEnabled(true);
                btnSave.setEnabled(false);
                btnDelete.setEnabled(false);
                btnClose.setEnabled(true);
                txtname.setEnabled(false);
                txtmoney.setEnabled(false);
                if (!dbmoney) {
                    cbodbname.removeItem("money");
                }
                if (value.toLowerCase().equals("money")) {
                    dbmoney = true;
                }
                if (((DefaultComboBoxModel) cbodbname.getModel()).getIndexOf(value) == -1) {
                    cbodbname.addItem(value);
                }
                DatabaseMetaData dm = (DatabaseMetaData) conn.getMetaData();
                StringBuilder sb = new StringBuilder();
                sb.append(value).append("; ").append(dm.getDriverName()).append("; ").append(dm.getDatabaseProductName()).append("; ")
                        .append(dm.getDatabaseProductVersion());
                this.setTitle(sb.toString());
            }
        } catch (IOException | ClassNotFoundException | SQLException ex) {
        }
    }

    private void CloseDatabase() {
        try {
            if (conn != null) {
                conn.close();
                conn = null;
            }
            this.setTitle("");
            cbodbname.setSelectedIndex(-1);
            dm.setRowCount(0);
            btnOpenDatabase.setEnabled(true);
            btnCloseDatabase.setEnabled(false);
            btnDeleteDatabase.setEnabled(true);
            btnAdd.setEnabled(false);
            btnSave.setEnabled(false);
            btnDelete.setEnabled(false);
            btnClose.setEnabled(true);
            txtname.setText("");
            txtmoney.setText("");
            txtname.setEnabled(false);
            txtmoney.setEnabled(false);
        } catch (SQLException ex) {
        }
    }

    private void DeleteDatabase() {
        try {
            File filecurent = new File(fileFolder.getCanonicalPath().concat(fileseparator).concat(cbodbname.getSelectedItem().toString().concat(filedbType)));
            if (filecurent.delete()) {
                if (conn != null) {
                    conn.close();
                    conn = null;
                }
                this.setTitle("");
                cbodbname.removeItemAt(dbindex);
                cbodbname.setSelectedIndex(-1);
                dm.setRowCount(0);
                btnOpenDatabase.setEnabled(true);
                btnCloseDatabase.setEnabled(false);
                btnDeleteDatabase.setEnabled(true);
                btnAdd.setEnabled(false);
                btnSave.setEnabled(false);
                btnDelete.setEnabled(false);
                btnClose.setEnabled(true);
                txtname.setText("");
                txtmoney.setText("");
                txtname.setEnabled(false);
                txtmoney.setEnabled(false);
                cbodbname.requestFocusInWindow();
            }
        } catch (IOException | SQLException ex) {
            JOptionPane.showInternalMessageDialog(this, "Lỗi xóa cơ sở dữ liệu " + ex.getMessage(), "Xóa Database", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void createtbldmLop(Connection conn) {
        String sql = "CREATE TABLE IF NOT EXISTS tbldmLop(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR(50) NOT NULL, money REAL NOT NULL);";
        try {
            if (conn != null) {
                Statement stmt = conn.createStatement();
                stmt.execute(sql);
            }
        } catch (SQLException e) {

        }
    }

    private int inserttbldmLop(Connection conn) {
        int kq = 0;
        String name = txtname.getText();
        float money = Float.valueOf(txtmoney.getText());
        String sql = "INSERT INTO tbldmLop (name, money) VALUES ('" + name + "'," + money + ")";
        try {
            if (conn != null) {
                Statement stmt = conn.createStatement();
                kq = stmt.executeUpdate(sql);
            }
        } catch (SQLException e) {

        }
        return kq;
    }

    private int updatetbldmLop(Connection conn) {
        int kq = 0;
        NumberFormat format = DecimalFormat.getInstance();
        format.setGroupingUsed(true);
        format.setMinimumFractionDigits(0);
        String name = txtname.getText();
        try {
            float money = format.parse(txtmoney.getText()).floatValue();
            String sql = "UPDATE tbldmLop SET name = '" + name + "', money = " + money + " WHERE id = " + this.id;
            if (conn != null) {
                Statement stmt = conn.createStatement();
                kq = stmt.executeUpdate(sql);
            }
        } catch (SQLException | ParseException e) {

        }
        return kq;
    }

    private int deletetbldmLop(Connection conn) {
        int kq = 0;
        try {
            String sql = "DELETE FROM tbldmLop WHERE id = " + this.id;
            if (conn != null) {
                Statement stmt = conn.createStatement();
                kq = stmt.executeUpdate(sql);
            }
        } catch (SQLException e) {

        }
        return kq;
    }

    private int selecttbldmLop(Connection conn) {
        int kq = 0;
        String sql = "SELECT * FROM tbldmLop";
        try {
            if (conn != null) {
                Statement stmt = conn.createStatement();
                try ( ResultSet rs = stmt.executeQuery(sql)) {
                    int row = -1;
                    dm.setRowCount(0);
                    while (rs.next()) {
                        kq++;
                        row++;
                        dm.insertRow(row, new Object[]{rs.getInt(1),
                            rs.getString(2), rs.getFloat(3)});
                    }
                }
            }

        } catch (SQLException e) {

        }
        return kq;
    }

    private void GUI() {
        lbldbname.setBounds(5, 5, 150, 30);
        getContentPane().add(this.lbldbname);
        cbodbname.setEditable(true);
        cbodbname.setBounds(155, 5, 150, 30);
        getContentPane().add(this.cbodbname);
        btnOpenDatabase.setBounds(310, 5, 150, 30);
        btnOpenDatabase.setMnemonic(KeyEvent.VK_O);
        getContentPane().add(this.btnOpenDatabase);
        btnCloseDatabase.setBounds(465, 5, 150, 30);
        btnCloseDatabase.setMnemonic(KeyEvent.VK_C);
        getContentPane().add(this.btnCloseDatabase);
        btnDeleteDatabase.setBounds(615, 5, 150, 30);
        btnDeleteDatabase.setMnemonic(KeyEvent.VK_D);
        getContentPane().add(this.btnDeleteDatabase);
        scrollPane.setBounds(5, 50, 600, 400);
        scrollPane.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.red));
        getContentPane().add(this.scrollPane);
        scrollPane.setViewportView(table);
        scrollPane.repaint();
        table.setFont(new Font("Times New Roman", Font.PLAIN, 16));
        JTableHeader th = table.getTableHeader();
        th.setPreferredSize(new Dimension(30, 30));
        th.setFont(new Font("Times New Roman", Font.BOLD, 16));

        lblname.setBounds(610, 50, 100, 30);
        lblname.setDisplayedMnemonic(KeyEvent.VK_N);
        lblname.setLabelFor(txtname);
        getContentPane().add(this.lblname);
        txtname.setBounds(715, 50, 400, 30);
        getContentPane().add(this.txtname);

        lblmoney.setBounds(610, 85, 100, 30);
        lblmoney.setDisplayedMnemonic(KeyEvent.VK_M);
        lblmoney.setLabelFor(txtmoney);
        getContentPane().add(this.lblmoney);
        txtmoney.setBounds(715, 85, 200, 30);
        getContentPane().add(this.txtmoney);

        btnAdd.setBounds(715, 120, 100, 30);
        btnAdd.setMnemonic(KeyEvent.VK_A);
        getContentPane().add(this.btnAdd);
        btnSave.setBounds(820, 120, 100, 30);
        btnSave.setMnemonic(KeyEvent.VK_S);
        getContentPane().add(this.btnSave);
        btnDelete.setBounds(925, 120, 100, 30);
        btnDelete.setMnemonic(KeyEvent.VK_L);
        getContentPane().add(this.btnDelete);
        btnClose.setBounds(1030, 120, 100, 30);
        btnClose.setMnemonic(KeyEvent.VK_E);
        getContentPane().add(this.btnClose);
        cbodbname.addActionListener((ActionEvent e) -> {
            this.dbindex = cbodbname.getSelectedIndex();
        });

        cbodbname.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {

            }

            @Override
            public void keyReleased(KeyEvent e) {
                if (e.getKeyChar() == KeyEvent.VK_ENTER) {
                    if (((JTextComponent) ((JComboBox) ((Component) e
                            .getSource()).getParent()).getEditor()
                            .getEditorComponent()).getText().trim().isEmpty()) {
                        valuedbname = "";
                        cbodbname.requestFocusInWindow();
                    } else {
                        btnOpenDatabase.requestFocusInWindow();
                    }
                }
            }

            @Override
            public void keyTyped(KeyEvent e) {
                char c = e.getKeyChar();
                if (!(Character.isAlphabetic(c)
                        || Character.isDigit(c)
                        || (c == KeyEvent.VK_BACK_SPACE)
                        || (c == KeyEvent.VK_DELETE))) {
                    e.consume();
                }
            }
        });

        txtname.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyChar() == KeyEvent.VK_ENTER) {
                    if (txtname.getText().trim().isEmpty()) {
                        txtname.requestFocusInWindow();
                    } else {
                        txtmoney.requestFocusInWindow();
                    }
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {

            }

            @Override
            public void keyTyped(KeyEvent e) {

            }
        });
        txtmoney.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyChar() == KeyEvent.VK_ENTER) {
                    if (txtmoney.getText().trim().isEmpty()) {
                        txtmoney.requestFocusInWindow();
                    } else {
                        btnSave.requestFocusInWindow();
                    }
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {

            }

            @Override
            public void keyTyped(KeyEvent e) {
                DecimalFormatSymbols symbols = new DecimalFormatSymbols();
                char c = e.getKeyChar();
                char decimalSeparator = symbols.getDecimalSeparator();
                long count = txtmoney.getText().chars().filter(ch -> ch == decimalSeparator).count();
                if (count == 0) {
                    if (!(Character.isDigit(c)
                            || (c == KeyEvent.VK_BACK_SPACE)
                            || (c == KeyEvent.VK_DELETE) || (c == decimalSeparator))) {
                        e.consume();
                    }
                } else {
                    if (!(Character.isDigit(c)
                            || (c == KeyEvent.VK_BACK_SPACE)
                            || (c == KeyEvent.VK_DELETE))) {
                        e.consume();
                    }
                }
            }
        });

        dm.addColumn("id");
        dm.addColumn("Name");
        dm.addColumn("Money");
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        table.setRowHeight(30);
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
        centerRenderer.setHorizontalAlignment(JLabel.CENTER);
        table.getColumnModel().getColumn(0).setCellRenderer(centerRenderer);

        cbodbname.addFocusListener(new FocusListener() {
            @Override
            public void focusGained(FocusEvent e) {

            }

            @Override
            public void focusLost(FocusEvent e) {

            }
        });
        btnOpenDatabase.addActionListener((ActionEvent e) -> {
            setOpenDatabase();
        });
        btnDeleteDatabase.addActionListener((ActionEvent e) -> {
            setDeleteDatabases();
        });
        btnCloseDatabase.addActionListener((ActionEvent e) -> {
            setCloseDatabases();
        });
        btnAdd.addActionListener((ActionEvent e) -> {
            setAdd();
        });
        btnSave.addActionListener((ActionEvent e) -> {
            setSave();
        });
        btnDelete.addActionListener((ActionEvent e) -> {
            setDelete();
        });
        btnClose.addActionListener((ActionEvent e) -> {
            setClose();
        });
        btnOpenDatabase.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyChar() == KeyEvent.VK_ENTER) {
                    if (btnOpenDatabase.isFocusable()) {
                        setOpenDatabase();
                    }
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {

            }

            @Override
            public void keyTyped(KeyEvent e) {

            }
        });
        btnDeleteDatabase.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyChar() == KeyEvent.VK_ENTER) {
                    if (btnDeleteDatabase.isFocusable()) {
                        setDeleteDatabases();
                    }
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {

            }

            @Override
            public void keyTyped(KeyEvent e) {

            }
        });
        btnCloseDatabase.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyChar() == KeyEvent.VK_ENTER) {
                    if (btnCloseDatabase.isFocusable()) {
                        setCloseDatabases();
                    }
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {

            }

            @Override
            public void keyTyped(KeyEvent e) {

            }
        });
        btnAdd.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyChar() == KeyEvent.VK_ENTER) {
                    if (btnAdd.isFocusable()) {
                        setAdd();
                    }
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {

            }

            @Override
            public void keyTyped(KeyEvent e) {

            }
        });
        btnSave.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyChar() == KeyEvent.VK_ENTER) {
                    if (btnSave.isFocusable()) {
                        setSave();
                    }
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {

            }

            @Override
            public void keyTyped(KeyEvent e) {

            }
        });
        btnDelete.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyChar() == KeyEvent.VK_ENTER) {
                    if (btnDelete.isFocusable()) {
                        setDelete();
                    }
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {

            }

            @Override
            public void keyTyped(KeyEvent e) {

            }
        });
        btnClose.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyChar() == KeyEvent.VK_ENTER) {
                    if (btnClose.isFocusable()) {
                        setClose();
                    }
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {

            }

            @Override
            public void keyTyped(KeyEvent e) {

            }
        });
        table.addMouseListener(new MouseListener() {

            @Override
            public void mouseReleased(MouseEvent e) {

            }

            @Override
            public void mousePressed(MouseEvent e) {
                int row;
                int rowcount = dm.getRowCount();
                if (rowcount > 0) {
                    row = table.getSelectedRow();
                    if (row < rowcount - 1) {
                        Object value = table.getValueAt(row, 0);
                        id = Integer.valueOf(value.toString());
                        value = table.getValueAt(row, 1);
                        txtname.setText(value.toString());
                        value = table.getValueAt(row, 2);
                        NumberFormat format = DecimalFormat.getInstance();
                        format.setGroupingUsed(true);
                        format.setMinimumFractionDigits(0);
                        txtmoney.setText(format.format(value));
                        btnAdd.setEnabled(true);
                        btnSave.setEnabled(true);
                        btnDelete.setEnabled(true);
                        btnClose.setEnabled(true);
                        txtname.setEnabled(true);
                        txtmoney.setEnabled(true);
                    } else {
                        id = -1;
                        txtname.setText("");
                        txtmoney.setText("");
                        btnAdd.setEnabled(true);
                        btnSave.setEnabled(false);
                        btnDelete.setEnabled(false);
                        btnClose.setEnabled(true);
                        txtname.setEnabled(false);
                        txtmoney.setEnabled(false);
                    }
                }
            }

            @Override
            public void mouseExited(MouseEvent e) {

            }

            @Override
            public void mouseEntered(MouseEvent e) {

            }

            @Override
            public void mouseClicked(MouseEvent e) {

            }
        });

        table.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                int rowcount = dm.getRowCount();
                if (rowcount > 0) {
                    int row = table.getSelectedRow();
                    if (e.getKeyCode() == KeyEvent.VK_UP) {
                        if (row > 0) {
                            getDataTableSelectRows(row - 1, rowcount);
                        }
                    }
                    if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                        getDataTableSelectRows(row + 1, rowcount);
                    }
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                        if (row == rowcount - 1) {
                            row = 0;
                            id = -1;
                            txtname.setText("");
                            txtmoney.setText("");
                        } else {
                            row++;
                        }
                        System.out.println("row: " + row);
                        getDataTableSelectRows(row, rowcount);
                    }
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {

            }

            @Override
            public void keyTyped(KeyEvent e) {

            }
        });
    }

    private void getDataTableSelectRows(int row, int rowcount) {
        try {
            if (row < rowcount - 1) {
                Object value = table.getValueAt(row, 0);
                id = Integer.valueOf(value.toString());
                value = table.getValueAt(row, 1);
                txtname.setText(value.toString());
                value = table.getValueAt(row, 2);
                NumberFormat format = DecimalFormat.getInstance();
                format.setGroupingUsed(true);
                format.setMinimumFractionDigits(0);
                txtmoney.setText(format.format(value));
                btnAdd.setEnabled(true);
                btnSave.setEnabled(true);
                btnDelete.setEnabled(true);
                btnClose.setEnabled(true);
                txtname.setEnabled(true);
                txtmoney.setEnabled(true);
            } else {
                id = -1;
                txtname.setText("");
                txtmoney.setText("");
                btnAdd.setEnabled(true);
                btnSave.setEnabled(false);
                btnDelete.setEnabled(false);
                btnClose.setEnabled(true);
                txtname.setEnabled(false);
                txtmoney.setEnabled(false);
            }
        } catch (NumberFormatException e) {

        }
    }

    private void setCloseDatabases() throws HeadlessException {
        int kq = JOptionPane.showConfirmDialog(this, "Bạn có chắc chắn đóng cơ sở dữ liệu không?", "Cơ sở dữ liệu", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
        if (kq == JOptionPane.YES_OPTION) {
            CloseDatabase();
             this.setTitle("java.version: " + javaversion);
        }
    }

    private void setDeleteDatabases() throws HeadlessException {
        valuedbname = ((JTextField) cbodbname.getEditor().getEditorComponent()).getText().trim();
        if (valuedbname.length() > 0) {
            int kq = JOptionPane.showConfirmDialog(this, "Bạn có chắc chắn xóa cơ sở dữ liệu " + cbodbname.getSelectedItem() + " không?", "Xóa Database", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
            if (kq == JOptionPane.YES_OPTION) {
                DeleteDatabase();
               this.setTitle("java.version: " + javaversion);
            }
        } else {
            cbodbname.requestFocusInWindow();
        }
    }

    private void setClose() throws HeadlessException {
        try {
            int kq = JOptionPane.showConfirmDialog(this, "Bạn có chắc chắn đóng cơ sở dữ liệu và thoát không?", "Thoát", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
            if (kq == JOptionPane.YES_OPTION) {
                if (conn != null) {
                    conn.close();
                    conn = null;
                }
                System.exit(0);
            }
        } catch (SQLException ex) {

        }
    }

    private void setDelete() {
        try {
            int kq = JOptionPane.showConfirmDialog(this, "Bạn có chắc chắn xóa dữ liệu có id = " + this.id + " không?", "Xóa dữ liệu", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
            if (kq == JOptionPane.YES_OPTION) {
                if (this.id != -1) {
                    deletetbldmLop(this.conn);
                    this.id = -1;
                    txtname.setText("");
                    txtmoney.setText("");
                    selecttbldmLop(this.conn);
                    SUM(table, 2);
                    btnAdd.setEnabled(true);
                    btnSave.setEnabled(false);
                    btnDelete.setEnabled(false);
                    btnClose.setEnabled(true);
                    txtname.setEnabled(false);
                    txtmoney.setEnabled(false);
                    table.requestFocusInWindow();
                }
            }
        } catch (HeadlessException ex) {

        }
    }

    private void setSave() {
        try {
            if (txtname.getText().trim().length() == 0) {
                txtname.requestFocusInWindow();
            } else if (txtmoney.getText().trim().length() == 0) {
                txtmoney.requestFocusInWindow();
            } else {
                if (this.id == -1) {
                    inserttbldmLop(this.conn);
                } else {
                    updatetbldmLop(this.conn);
                }
                this.id = -1;
                txtname.setText("");
                txtmoney.setText("");
                selecttbldmLop(this.conn);
                SUM(table, 2);
                btnAdd.setEnabled(true);
                btnSave.setEnabled(false);
                btnDelete.setEnabled(false);
                btnClose.setEnabled(true);
                txtname.setEnabled(false);
                txtmoney.setEnabled(false);
                int kq = JOptionPane.showConfirmDialog(this, "Đã lưu thành công. Tiếp tục thêm mới?", "Lưu dữ liệu", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
                if (kq == JOptionPane.YES_OPTION) {
                    btnAdd.requestFocusInWindow();
                } else {
                    table.requestFocusInWindow();
                }
            }
        } catch (HeadlessException ex) {

        }
    }

    private void setAdd() {
        this.id = -1;
        txtname.setText("");
        txtmoney.setText("");
        btnAdd.setEnabled(false);
        btnSave.setEnabled(true);
        btnDelete.setEnabled(false);
        btnClose.setEnabled(true);
        txtname.setEnabled(true);
        txtmoney.setEnabled(true);
        txtname.requestFocusInWindow();
    }

    private void setOpenDatabase() {
        valuedbname = ((JTextField) cbodbname.getEditor().getEditorComponent()).getText().trim();
        if (valuedbname.length() > 0) {
            OpenDatabase();
            createtbldmLop(this.conn);
            int kq = selecttbldmLop(this.conn);
            SUM(table, 2);
            System.out.println(kq);
            if (kq == 0) {
                btnAdd.requestFocusInWindow();
            } else {
                table.requestFocusInWindow();
            }
        } else {
            cbodbname.requestFocusInWindow();
        }
    }

    public frmMain() {
        this.javaversion = System.getProperty("java.version");
        setLayout(null);
        this.setTitle("java.version: " + javaversion);
        getContentPane().setBackground(Color.white);
        getRootPane().setBorder(BorderFactory.createMatteBorder(4, 4, 4, 4, Color.blue));
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);
        this.setResizable(true);
        GUI();
        cbodbname.removeAllItems();
        loaddbname();
        cbodbname.setSelectedIndex(-1);
        pack();
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        this.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent evt) {
                setExtendedState(JFrame.MAXIMIZED_BOTH);
            }
        });

        btnOpenDatabase.setEnabled(true);
        btnCloseDatabase.setEnabled(false);
        btnDeleteDatabase.setEnabled(true);
        btnAdd.setEnabled(false);
        btnSave.setEnabled(false);
        btnDelete.setEnabled(false);
        btnClose.setEnabled(true);
        txtname.setEnabled(false);
        txtmoney.setEnabled(false);
    }

    public static void main(String[] args) {
        try {
            java.awt.EventQueue.invokeLater(() -> {
                new frmMain().setVisible(true);
            });
        } catch (Exception ex) {

        }
    }
}


 

Tác giả: Vàng Văn Quyn

Chú ý: Việc đăng lại bài viết trên ở website hoặc các phương tiện truyền thông khác mà không ghi rõ nguồn https://365.io.vn là vi phạm bản quyền

Tổng số điểm của bài viết là: 1 trong 1 đánh giá

Xếp hạng: 1 - 1 phiếu bầu
Click để đánh giá bài viết
Thống kê
  • Đang truy cập7
  • Hôm nay1,521
  • Tháng hiện tại80,923
  • Tổng lượt truy cập9,172,466
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây