Feedback form using swing,awt,jdbc

 avatar
Rohit143
java
2 years ago
8.5 kB
4
Indexable
Never
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

import java.sql.*;

class MyFrame extends JFrame implements ActionListener {

    JLabel label2, label3;

    // Components of the Form
    JPanel firstTab;
    JLabel title;
    JLabel name;
    JTextField tname;
    JLabel mno;
    JTextField tmno;
    JLabel gender;
    JRadioButton male;
    JRadioButton female;
    JRadioButton other;
    JRadioButton prefer_not_to_say;
    ButtonGroup gengp;

    JLabel feedback;
    JTextArea tfeedback;
    JButton sub;
    JButton reset;
    JTextArea tout;
    JLabel res;
    JTextArea resadd;

    MyFrame() {

        setSize(400, 400);
        setDefaultCloseOperation(3);

        JTabbedPane tabbedPane = new JTabbedPane();

        // constructor, to initialize the components
        // with default values.
        setTitle("Covid 19 vaccination Feedback form");
        setBounds(300, 90, 900, 600);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        firstTab = new JPanel();
        firstTab.setLayout(null);

        title = new JLabel("Covid 19 vaccination Feedback form");
        title.setFont(new Font("Arial", Font.PLAIN, 30));
        title.setSize(400, 30);
        title.setLocation(250, 30);
        firstTab.add(title);

        name = new JLabel("Name");
        name.setFont(new Font("Arial", Font.PLAIN, 20));
        name.setSize(100, 20);
        name.setLocation(100, 100);
        firstTab.add(name);

        tname = new JTextField();
        tname.setFont(new Font("Arial", Font.PLAIN, 15));
        tname.setSize(190, 20);
        tname.setLocation(200, 100);
        firstTab.add(tname);

        mno = new JLabel("Mobile");
        mno.setFont(new Font("Arial", Font.PLAIN, 20));
        mno.setSize(100, 20);
        mno.setLocation(100, 150);
        firstTab.add(mno);

        tmno = new JTextField();
        tmno.setFont(new Font("Arial", Font.PLAIN, 15));
        tmno.setSize(150, 20);
        tmno.setLocation(200, 150);
        firstTab.add(tmno);

        gender = new JLabel("Gender");
        gender.setFont(new Font("Arial", Font.PLAIN, 20));
        gender.setSize(100, 20);
        gender.setLocation(100, 200);
        firstTab.add(gender);

        male = new JRadioButton("Male");
        male.setFont(new Font("Arial", Font.PLAIN, 15));
        male.setSelected(true);
        male.setSize(75, 20);
        male.setLocation(200, 200);
        firstTab.add(male);

        female = new JRadioButton("Female");
        female.setFont(new Font("Arial", Font.PLAIN, 15));
        female.setSelected(false);
        female.setSize(80, 20);
        female.setLocation(275, 200);
        firstTab.add(female);

        other = new JRadioButton("Other");
        other.setFont(new Font("Arial", Font.PLAIN, 15));
        other.setSelected(false);
        other.setSize(80, 20);
        other.setLocation(355, 200);
        firstTab.add(other);

        prefer_not_to_say = new JRadioButton("Prefer not to say");
        prefer_not_to_say.setFont(new Font("Arial", Font.PLAIN, 15));
        prefer_not_to_say.setSelected(false);
        prefer_not_to_say.setSize(200, 20);
        prefer_not_to_say.setLocation(435, 200);
        firstTab.add(prefer_not_to_say);

        gengp = new ButtonGroup();
        gengp.add(male);
        gengp.add(female);
        gengp.add(other);
        gengp.add(prefer_not_to_say);

        feedback = new JLabel("Feedback");
        feedback.setFont(new Font("Arial", Font.PLAIN, 20));
        feedback.setSize(100, 20);
        feedback.setLocation(100, 250);
        firstTab.add(feedback);

        tfeedback = new JTextArea();
        tfeedback.setFont(new Font("Arial", Font.PLAIN, 15));
        tfeedback.setSize(500, 180);
        tfeedback.setLocation(200, 250);
        tfeedback.setLineWrap(true);
        firstTab.add(tfeedback);

        sub = new JButton("Submit");
        sub.setFont(new Font("Arial", Font.PLAIN, 15));
        sub.setSize(100, 20);
        sub.setLocation(150, 450);
        sub.addActionListener(this);
        firstTab.add(sub);

        reset = new JButton("Reset");
        reset.setFont(new Font("Arial", Font.PLAIN, 15));
        reset.setSize(100, 20);
        reset.setLocation(270, 450);
        reset.addActionListener(this);

        firstTab.add(reset);

        res = new JLabel("");
        res.setFont(new Font("Arial", Font.PLAIN, 20));
        res.setSize(500, 25);
        res.setLocation(100, 500);
        firstTab.add(res);

        // Second Tab Item
       final JPanel secondPanel = new JPanel();
       final JLabel receivedFeedbacks=new JLabel("Feedback received");
       secondPanel.add(receivedFeedbacks);

       final JScrollPane scrollPane = displayTable();
        secondPanel.add(scrollPane);

        validate();

        JButton refresh =new JButton("Refresh");
        refresh.setSize(100, 20);
        refresh.setLocation(20,50);
        refresh.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae) {
                secondPanel.remove(scrollPane);
                secondPanel.add(displayTable());
                receivedFeedbacks.setText("Feedback received and Refreshed.");
                validate();
                
            }
        });
        
        secondPanel.add(refresh);
        secondPanel.add(scrollPane);

        tabbedPane.add("Share Feedback", firstTab);
        tabbedPane.add("Received Feedbacks", secondPanel);
        add(tabbedPane);
        setVisible(true);

    }
    public JScrollPane displayTable() {

        
        JTable table ;
        DefaultTableModel defaultTableModel = new DefaultTableModel();
        table = new JTable(defaultTableModel);
        defaultTableModel.addColumn("Name");
        defaultTableModel.addColumn("Feedback");
        
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection connection = DriverManager.getConnection("jdbc:odbc:feedbacks");
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("select * from feedback");

            while (resultSet.next()) {
                String name = resultSet.getString(1);
                String feedback = resultSet.getString(3);

                defaultTableModel.addRow(new Object[]{name,feedback});
                
            }
            
        } catch (Exception e) {
            System.out.println(e);
            
        }
        JScrollPane scrollPane = new JScrollPane(table);
        return scrollPane;

        
    }

   
    public void reset() {
       
        String def = "";
        tname.setText(def);
        tfeedback.setText(def);
        tmno.setText(def);
        res.setText(def);
        tout.setText(def);
        resadd.setText(def);
    }

    public void actionPerformed(ActionEvent e) {

        String nameData = tname.getText();
        String numberData = tmno.getText();
        String feedbackData = tfeedback.getText();

        if (e.getSource() == sub) {

            if (nameData.isEmpty() || (numberData.isEmpty()) || (feedbackData.isEmpty())) {
                JOptionPane.showMessageDialog(null, "Data missing");
            } else {
                try {

                    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                    Connection connection = DriverManager.getConnection("jdbc:odbc:feedbacks");
                    Statement statement = connection.createStatement();
                    statement.executeUpdate("INSERT INTO feedback VALUES('" + nameData + "','" + numberData + "','"
                            + feedbackData + "')");

                    JOptionPane.showMessageDialog(null, "Thanks for your feedback");

                    connection.close();

                   reset();
                   validate();

                } catch (Exception exception) {
                    System.out.println(exception);

                }
            }

        
        }

        else if (e.getSource() == reset) {
           reset();
        }

    }

}

public class FeedbackForm {

    public static void main(String[] args) {
        new MyFrame();
    }
}