Обновление данных на JFrame

109
24 мая 2019, 07:30

Делаю программу для взаимодействия с базой данных. Рисую достаточно примитивную форму

public void reviewTable() throws SQLException {
        DatabaseConnector dbConnector = new DatabaseConnector(connectionURL, username, password);
        try {
            dbConnector.Init();
        } catch (ClassNotFoundException e) {
            System.out.println("Ошибка при подключении к базе");
        }
        OrderRunningTable orderRunningTable = new OrderRunningTable();
        orderRunningTable.addDate(dbConnector, "listOrdered");
        jTableRunningOrder = new JTable(orderRunningTable);
        scrollbarRunnungOrder = new JScrollPane(jTableRunningOrder);
        scrollbarRunnungOrder.setPreferredSize(new Dimension(1500, 400));
        ActionListener actionListener = new AddListener();
        btnNewOrder = new JButton("Добавление заказа");
        btnNewOrder.setBounds(0,400,150,30);
        btnNewOrder.addActionListener(actionListener);
        btnEditOrder = new JButton("Изменение заказа");
        btnEditOrder.setBounds(160, 400, 150, 30);
        btnEditOrder.addActionListener(actionListener);
        mainActivity.add(btnNewOrder);
        mainActivity.add(btnEditOrder);
        mainActivity.add(scrollbarRunnungOrder);
    }

Написал обработчик для добавления заказов. Добавление заказа происходит в отдельном окне. После того, как данные о заказе добавлены в базу мне необходимо сделать так, чтобы данные на форме тоже обновились. Написал для этого также обработчик нажатия на кнопку

public class InsertListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            DatabaseConnector connector = new DatabaseConnector(connectionURL, username, password);
            try {
                connector.Init();
            } catch (ClassNotFoundException e1) {
                e1.printStackTrace();
            }
            if (!phoneNumber.getText().equals("") &&
                    !FIO_Client.getText().equals("") &&
                    !dataOrderedExecution.equals("") &&
                    !startAdress.getText().equals("") &&
                    !endAdress.getText().equals("") &&
                    !idDriver.getSelectedItem().equals("")) {
                connector.updateQuery("insert into mytaxi.listOrdered set phoneNumber = \'" + phoneNumber.getText() +
                        "\', FIO_Client = \'" + FIO_Client.getText() +
                        "\', dataOrderedExecution = \'" + dataOrderedExecution.getText() +
                        "\', startAdress = \'" + startAdress.getText() +
                        "\', endAdress = \'" + endAdress.getText() +
                        "\', tariff = \'" + String.valueOf(tariff.getSelectedItem()) +
                        "\', idDriver = " + Integer.parseInt(String.valueOf(idDriver.getSelectedItem())) +
                        ", status = \'" + String.valueOf(status.getSelectedItem()) +
                        "\', typeAuto = \'" + String.valueOf(typeAuto.getSelectedItem()) +
                        "\', cmoke = " + cmoke.isSelected() +
                        ", WiFi = " + WiFi.isSelected() +
                        ", animals = " + animals.isSelected() +
                        ", children = " + children.isSelected() +
                        ", cost = 0"  +
                        ", paid = 0");
                connector.updateQuery("update mytaxi.autopark set status = \'Доезд\' where id = " +
                        Integer.parseInt(String.valueOf(idDriver.getSelectedItem())));
                connector.finalize();

                try {
                    reviewTable();
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }
                newOrderActivity.dispose();
                newOrderActivity.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            }
            else {
                JFrame error = new JFrame("Ошибка");
                error.setSize(100, 100);
                JTextArea errorsMessage = new JTextArea("Проверьте значения полей!");
                errorsMessage.setBounds(0, 40, 100, 20);
                errorsMessage.disable();
                error.add(errorsMessage);
                error.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                error.setVisible(true);
            }
        }
    }

Данные в базе обновляются, а вот как обновить окно, в котором они отображаются? Попытался повторно вызвать метод reviewTable(), но безуспешно. Кроме того попробовал делать removeAll с mainActivity, также не помогает.

Answer 1

попробуйте сделать так:

создаем окошко

JFrame window = new JFrame();    

когда надо его обновить - чистим (возможно не полностью, но я полностью чистил), добавляем по новой все что нужно и .revalidate();

window.getContentPane().removeAll();
window.add(что-то там);
window.revalidate();
READ ALSO
Получение списка из ObjectInputStream

Получение списка из ObjectInputStream

Есть метод,который отправляет серверу команду, в ответ сервер отправляет список автомобилейМетод:

101
Как реализовать вывод картинок с разным размером на CSS, как у pinterest?

Как реализовать вывод картинок с разным размером на CSS, как у pinterest?

Стоит задача вывода картинок разного размера, как на прикрепленном примереНужен вывод в 3-4 колонки по горизонтали, хотелось бы реализовать...

144
Проблема с анимацией изображений на iOs

Проблема с анимацией изображений на iOs

На работе делаю сайт, который требует много оптимизации: большое количество графики, анимации и прочего

104
Проверить на наличие русских символов и пробела в строке?

Проверить на наличие русских символов и пробела в строке?

поле проверить форму на корректное заполнениеполе может содержать только русские слова пробела и дефисы

119