Как связать несколько фреймов в Java

Я создал отдельные кадры входа и регистрации, которые оба подключены к MySQL. Если я просто запущу фрейм реестра, я смогу вставить нового пользователя в базу данных. Однако, если я запускаю рамку входа, которая включает в себя рамку регистрации внутри, и нажимаю «Регистрация», кнопка, которая добавляется в рамку регистрации, не работает, даже если текстовые поля заполнены.

//this is Login frame class

package YASAR;

import java.awt.BorderLayout;
import java.sql.*;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class GirisEkrani extends JFrame {
    static JButton btnKullancEkle = new JButton("Kullan\u0131c\u0131 Ekle");
    public static JPanel contentPane;
    private static JTextField textField;
    private static JComboBox comboBox = new JComboBox();
    private static JButton btnBalan = new JButton("Ba\u011Flan");
    private static  JLabel lblParola = new JLabel("Parola :");
    private static JLabel lblXaampeBalanlamad = new JLabel("Xaampe Ba\u011Flan\u0131lamad\u0131");
    //private static KullaniciEkle ke=new KullaniciEkle();
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                lblXaampeBalanlamad.setVisible(false);
                try {

                    GirisEkrani frame = new GirisEkrani();
                    frame.setVisible(true);

                    try {
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/yasar","ozkan","******");

        btnKullancEkle.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                frame.setVisible(false);
                KullaniciEkle ke=new KullaniciEkle();
                ke.setVisible(true);



            }
        });


        btnBalan.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                frame.setVisible(false);

                deneme abc=new deneme();
                abc.setVisible(true);

            }
        });


        con.close();
                    }

        catch(SQLException e) {


            textField.setEditable(false);
            btnKullancEkle.setEnabled(false);
            comboBox.setEnabled(false);
            btnBalan.setEnabled(false);
            lblParola.setVisible(false);
            lblXaampeBalanlamad.setVisible(true);


            e.printStackTrace();
        }

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

    }

    /**
     * Create the frame.
     */
    public GirisEkrani() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 286, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        textField = new JTextField();
        textField.setBounds(74, 129, 124, 19);
        contentPane.add(textField);
        textField.setColumns(10);


        comboBox.setBounds(74, 42, 124, 21);
        contentPane.add(comboBox);


        btnBalan.setBounds(74, 184, 124, 33);
        contentPane.add(btnBalan);

        btnKullancEkle.setBounds(74, 227, 124, 26);
        contentPane.add(btnKullancEkle);


        lblParola.setBounds(10, 132, 45, 13);
        contentPane.add(lblParola);
        lblXaampeBalanlamad.setBounds(74, 90, 162, 29);

        contentPane.add(lblXaampeBalanlamad);
    }

}
// And this is register frame class where I add user 

package YASAR;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.sql.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Font;

public class KullaniciEkle extends JFrame {

    public static JPanel contentPane;
    public static JTextField textField;
    public static JTextField textField_1;
    public static JTextField textField_2;
    public static JLabel lblIsim;
    public static JLabel lblSoyisim;
    public static JButton btnNewButton = new JButton("Ekle");

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    KullaniciEkle frame = new KullaniciEkle();
                    frame.setVisible(true);



                    try {
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/yasar","ozkan","******");

    btnNewButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

        String input = "INSERT INTO kullanicilar (TC,name,surname) VALUES(?,?,?)";
            try {


                PreparedStatement ps=con.prepareStatement(input);

                ps.setInt(1, Integer.parseInt(textField.getText()));
                ps.setString(2, textField_1.getText());
                ps.setString(3, textField_2.getText());


                //ps.execute();
                if (ps.executeUpdate()>0) {
                    JOptionPane.showMessageDialog(null, "user added","user add",JOptionPane.OK_CANCEL_OPTION);
                }


            }catch(SQLException f) {
                f.printStackTrace();
            }

            finally {System.out.println("pressed");}

                frame.setVisible(false);
                new GirisEkrani().setVisible(true);

                }
    });

                    }
                        catch(SQLException e) {
                            e.printStackTrace();
                        }


                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public KullaniciEkle() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 285, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        textField = new JTextField();
        textField.setBounds(87, 67, 96, 19);
        contentPane.add(textField);
        textField.setColumns(10);

        textField_1 = new JTextField();
        textField_1.setBounds(87, 112, 96, 19);
        contentPane.add(textField_1);
        textField_1.setColumns(10);

        textField_2 = new JTextField();
        textField_2.setBounds(87, 160, 96, 19);
        contentPane.add(textField_2);
        textField_2.setColumns(10);
        btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 10));



        btnNewButton.setBounds(93, 232, 85, 21);
        contentPane.add(btnNewButton);

        JLabel lblTc = new JLabel("TC");
        lblTc.setFont(new Font("Tahoma", Font.PLAIN, 10));
        lblTc.setBounds(10, 70, 45, 13);
        contentPane.add(lblTc);

        lblIsim = new JLabel("\u0130sim");
        lblIsim.setFont(new Font("Tahoma", Font.PLAIN, 10));
        lblIsim.setBounds(10, 115, 45, 13);
        contentPane.add(lblIsim);

        lblSoyisim = new JLabel("Soyisim");
        lblSoyisim.setFont(new Font("Tahoma", Font.PLAIN, 10));
        lblSoyisim.setBounds(10, 163, 45, 13);
        contentPane.add(lblSoyisim);
    }

}


Разместите код. Так что мы можем помочь вам. Вы получаете какие-либо ошибки?

Hasitha Jayawardana 27.05.2019 12:47

Я не получаю никаких ошибок.

Ozkan lV 27.05.2019 13:10

Я проверил ваш код, и он работает нормально. Я не получаю никаких ошибок при открытии окна регистрации из окна входа в систему. Возможно, вам следует посмотреть на соединение с базой данных.

Hasitha Jayawardana 27.05.2019 13:34

Я могу открыть любой из них, но основная проблема заключается в том, что я не могу вставить нового пользователя из окна входа в систему. Я могу вставить, если я запускаю только класс регистрации.

Ozkan lV 27.05.2019 13:40

Поместите прослушиватель действия кнопки внутри конструктора.

Hasitha Jayawardana 28.05.2019 06:00
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
249
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно поместить этот код в свой Constructor.

btnNewButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

        String input = "INSERT INTO kullanicilar (TC,name,surname) VALUES(?,?,?)";
            try {


                PreparedStatement ps=con.prepareStatement(input);

                ps.setInt(1, Integer.parseInt(textField.getText()));
                ps.setString(2, textField_1.getText());
                ps.setString(3, textField_2.getText());


                //ps.execute();
                if (ps.executeUpdate()>0) {
                    JOptionPane.showMessageDialog(null, "user added","user add",JOptionPane.OK_CANCEL_OPTION);
                }


            }catch(SQLException f) {
                f.printStackTrace();
            }

            finally {System.out.println("pressed");}

                frame.setVisible(false);
                new GirisEkrani().setVisible(true);

                }
    });

Наконец, это будет выглядеть так,

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.sql.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Font;

public class KullaniciEkle extends JFrame {

    public static JPanel contentPane;
    public static JTextField textField;
    public static JTextField textField_1;
    public static JTextField textField_2;
    public static JLabel lblIsim;
    public static JLabel lblSoyisim;
    public static JButton btnNewButton = new JButton("Ekle");

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    KullaniciEkle frame = new KullaniciEkle();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public KullaniciEkle() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 285, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        textField = new JTextField();
        textField.setBounds(87, 67, 96, 19);
        contentPane.add(textField);
        textField.setColumns(10);

        textField_1 = new JTextField();
        textField_1.setBounds(87, 112, 96, 19);
        contentPane.add(textField_1);
        textField_1.setColumns(10);

        textField_2 = new JTextField();
        textField_2.setBounds(87, 160, 96, 19);
        contentPane.add(textField_2);
        textField_2.setColumns(10);
        btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 10));

        btnNewButton.setBounds(93, 232, 85, 21);
        contentPane.add(btnNewButton);

        JLabel lblTc = new JLabel("TC");
        lblTc.setFont(new Font("Tahoma", Font.PLAIN, 10));
        lblTc.setBounds(10, 70, 45, 13);
        contentPane.add(lblTc);

        lblIsim = new JLabel("\u0130sim");
        lblIsim.setFont(new Font("Tahoma", Font.PLAIN, 10));
        lblIsim.setBounds(10, 115, 45, 13);
        contentPane.add(lblIsim);

        lblSoyisim = new JLabel("Soyisim");
        lblSoyisim.setFont(new Font("Tahoma", Font.PLAIN, 10));
        lblSoyisim.setBounds(10, 163, 45, 13);
        contentPane.add(lblSoyisim);

        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                btnNewButtonActionPerformed(e);
            }
        });

    }

    private void btnNewButtonActionPerformed(ActionEvent evt) {
        try {
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/yasar", "ozkan", "******");

            String input = "INSERT INTO kullanicilar (TC,name,surname) VALUES(?,?,?)";
            try {

                PreparedStatement ps = con.prepareStatement(input);

                ps.setInt(1, Integer.parseInt(textField.getText()));
                ps.setString(2, textField_1.getText());
                ps.setString(3, textField_2.getText());

                //ps.execute();
                if (ps.executeUpdate() > 0) {
                    JOptionPane.showMessageDialog(null, "user added", "user add", JOptionPane.OK_CANCEL_OPTION);
                }

            } catch (SQLException f) {
                f.printStackTrace();
            } finally {
                System.out.println("pressed");
            }

            //Instead of frame use this keyword
            this.setVisible(false);
            new GirisEkrani().setVisible(true);

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

ПРИМЕЧАНИЕ:- Это не лучшая практика для связи с базой данных.

Это сработало, я очень ценю это, спасибо!

Ozkan lV 28.05.2019 16:52

Приятно знать, что помогло :)

Hasitha Jayawardana 29.05.2019 12:18

Другие вопросы по теме

Как внедрить имена файлов изображений в базу данных mysql
PHP AJAX Delete Record - удаление работает только 1 раз
Как отобразить результат group_concat отдельно в ячейке таблицы html?
Запрос на вычитание одного и того же значения столбца с разным интервалом дня с базой данных SQL
Используйте CASE THEN в SQL
Первые 5 строк суммируются по ссылке для каждого типа, все остальные равны 1, сгруппированы по идентификатору команды
Как получить сгенерированный внешний ключ, созданный в MySQL, для использования в функции вставки
Ниже приведен код динамической формы, который может вставлять данные, добавляя несколько входных данных от пользователя в строку, но я хочу, чтобы они были в столбце. Как мне это сделать?
Java Spring Boot + Mysql — возвращает ответ Json (ключ-значение), когда результат запроса mysql не соответствует какой-либо модели, соответствующей какой-либо таблице базы данных
Новичок в MySQL Workbench, в чем смысл подключения?