Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536

Появление формы при нажатии на кнопку

11.11.2015, 16:47. Показов 3235. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вообщем такая проблема: у меня есть таблица в этой таблице есть данные. Мне нужно сделать кнопку для редактирования выбранной строки. При нажатии на эту кнопку у меня должна появиться форма с несколькими текстовыми полями и двумя кнопками (Сохранить, отмена). Т.е. пользователь нажимает на кнопку редактировать открывается эта форма куда пользователь вводит данные, нажимает на кнопку сохранить и данные те которые находятся в данной строке изменяются на те что ввел пользователь. Подкиньте мысль как это можно сделать. может это можно сделать как то через JOptionPane.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.11.2015, 16:47
Ответы с готовыми решениями:

Ошибки при нажатии на кнопку
Добрый день. Хочу, чтобы пользователь вводил 10 чисел (ограничение на текстовое поле пока не ставил), а при нажатии на кнопки они...

Событие при нажатии на кнопку происходит неверно
Здравствуйте! У меня проблема, с выводом рисунка. После нажатия на кнопку у меня на панели должен появится рисунок, но он появляется только...

Пошаговое выполнение цикла при нажатии на кнопку
Здравствуйте! Не знаю, как реализовать пошаговое выполнение цикла при нажатии на кнопку. Среда Eclipse Neon.2 По задаче, как видите,...

12
 Аватар для Alradalion
132 / 126 / 85
Регистрация: 13.09.2013
Сообщений: 485
11.11.2015, 16:49
Таблица у вас представляет собой выгрузку базы данных?
Или откуда у вас берутся данные для таблицы?
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
11.11.2015, 18:05  [ТС]
Alradalion, да таблица представляет собой выгрузку из БД
0
 Аватар для Alradalion
132 / 126 / 85
Регистрация: 13.09.2013
Сообщений: 485
11.11.2015, 19:31
иван я, Я делал приблизительно так:
Java
1
2
3
4
5
6
7
8
9
try{
           String currow=jTable1.getModel().getValueAt(jTable1.convertRowIndexToModel(jTable1.getSelectedRow()), 0).toString();
       
       AddDrop Red=new AddDrop(df, currow);
    
       }
       catch (Exception e){
           JOptionPane.showMessageDialog(null,"Выберите строку");
       }
То есть получал значение вида - (выделенная строка, нулевой столбец) - у меня там id было записано, и передавал в конструктор новой формы. А дальше уже строил запрос к базе, выдавал по id из базы сведения и располагал их в нужных мне текстовых полях. Ну и там же делал обновление базы, когда человек нажимал "сохранить".
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
11.11.2015, 19:42  [ТС]
Alradalion, не совсем понял, вот в этой строке
Java
1
AddDrop Red=new AddDrop(df, currow);
вы передаете значение конструктору новой формы. А как вы там их получали? и что такое df?
0
 Аватар для Alradalion
132 / 126 / 85
Регистрация: 13.09.2013
Сообщений: 485
12.11.2015, 00:52
На df особо внимание не обращайте. Это другой фрейм, нужный мне для обновления, просто его не убрал.
То есть можно записать и так:
Java
1
2
3
4
5
6
7
8
9
10
try{
       //получение значения для того, чтобы потом по нему сделать запрос в базу
       String currow=jTable1.getModel().getValueAt(jTable1.convertRowIndexToModel(jTable1.getSelectedRow()), 0).toString();  
       
       AddDrop Red=new AddDrop(currow); //Создание нового фрейма
       Red.setVisible(true); //Отображение нового фрейма 
       }
       catch (Exception e){
           JOptionPane.showMessageDialog(null,"Выберите строку");
       }
И кусочек конструктора фрейма AddDrop

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public AddDrop(String b) {
        
        initComponents();  //Расположение на фрейме элементов. Код приводить не буду
        
        this.setTitle("Редактирование записи");
               
        jButton1.setText("Редактировать");
       
        //Запрос в базу по полученному из таблицы значению
        try(PreparedStatement pst=Drop.conn.prepareStatement("SELECT name, insta, count_members, members, other  FROM InstDrop Where id_drop=?");  ){ 
                pst.setString(1, b);
               
        try(ResultSet rs = pst.executeQuery();){
               
               //Заполнение компонентов значениями, полученными из базы
                while (rs.next()){
                autoComboBox1.setSelectedItem(rs.getString(1));
                autoComboBox2.setSelectedItem(rs.getString(2));
                jTextField2.setText(rs.getString(3));
                jTextField3.setText(rs.getString(5));
                }
            }
             catch(Exception e){
                JOptionPane.showMessageDialog(null,"AddDrop, Ошибка редактирования: line=94, Error="+e);
             }
          }
           catch(Exception e){
                JOptionPane.showMessageDialog(null,"AddDrop, Ошибка редактирования: line=94, Error="+e);
          }
           pack();  
        }
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
12.11.2015, 14:30  [ТС]
Alradalion, При запуске программы у меня постоянно вылетает ошибка "выберите строку". Хотя я ее выбираю. В чем может быть причина?
0
 Аватар для Alradalion
132 / 126 / 85
Регистрация: 13.09.2013
Сообщений: 485
12.11.2015, 14:35
Лучший ответ Сообщение было отмечено иван я как решение

Решение

иван я, уберите try-catch и код ошибки посмотрите
1
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
12.11.2015, 14:36  [ТС]
Alradalion,
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
    at java.util.Vector.elementData(Vector.java:730)
    at java.util.Vector.elementAt(Vector.java:473)
    at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:649)
    at javaapplication120.DIpp.jButton8ActionPerformed(DIpp.java:1160)
    at javaapplication120.DIpp.access$1100(DIpp.java:39)
    at javaapplication120.DIpp$15.actionPerformed(DIpp.java:698)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.awt.EventQueue$3.run(EventQueue.java:686)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:702)
    at java.awt.EventQueue$4.run(EventQueue.java:700)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
вот код ошибки
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
12.11.2015, 14:38
вы английский вообще не понимаете? трудно жить программисту незнающему английский язык, хотябы технический. он же вам пишет, что проблема с индексом.
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
12.11.2015, 15:37  [ТС]
Alradalion, та ошибка исчезла появилась вот такая
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javaapplication120.Okno.<init>(Okno.java:27)
    at javaapplication120.DIpp.jButton8ActionPerformed(DIpp.java:1162)
    at javaapplication120.DIpp.access$1100(DIpp.java:39)
    at javaapplication120.DIpp$15.actionPerformed(DIpp.java:698)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.awt.EventQueue$3.run(EventQueue.java:686)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:702)
    at java.awt.EventQueue$4.run(EventQueue.java:700)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 12 секунды)
Добавлено через 27 секунд
Doctor_, там я понял в чем ошибка

Добавлено через 1 минуту
Всем спасибо я разобрался

Добавлено через 55 минут
Doctor_, Объясните пожалуйста вот эту ошибку
XML
1
Parametr index out of range (1> number of parameters, which is  0)
не могу понять.
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
12.11.2015, 15:51
Если не ошибаюсь это SQLException. Ну опять какой нибудь SQL мудрённый там написали, вот и не работает.
0
 Аватар для иван я
17 / 17 / 16
Регистрация: 15.12.2012
Сообщений: 536
12.11.2015, 18:16  [ТС]
Doctor_, Спасибо разобрался, возникла еще одна проблема почему при нажатие на кнопку
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
             jButton1.addActionListener(new ActionListener() {
            
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            String pp, kp;
                           pp= jTextField1.getText();
                            kp=jTextField2.getText();
                            try {
                          
                                
                                 st.executeUpdate("UPDATE reports2016 SET id='"+pp+"',the_content_of_the_record='" +kp + "'    WHERE id='" +b + "' ");
                                } catch (SQLException ex) {
                                Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
                            }
       
            }
        });
не UPDATE с первого раза не срабатывает? не подскажете в чем проблема может быть. Метод нажатия на кнопку срабатывает каждый раз при нажатии на кнопку, но в СУБД данные обновляются при нажатии на кнопку со второго третьего раза. И при этом никаких ошибок не вываливается

Добавлено через 1 минуту
вот полный код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
    Okno(final String b) {
      try {
          this.setTitle("Редактирование записи");
           conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/vanek?user=root&password=");
              st = DIpp.conn.createStatement();
              
                    initComponents();
           jButton1.setText("Редактировать");
           
  
               rs = st.executeQuery("SELECT* FROM reports2016 WHERE id="+b);  
                while (rs.next()) {
              jTextField1.setText(rs.getString(1));
               jTextField2.setText(rs.getString(2));
               jTextField3.setText(rs.getString(3));
               jTextField4.setText(rs.getString(4));
               jTextField5.setText(rs.getString(5));
               jTextField6.setText(rs.getString(6));
               jTextField7.setText(rs.getString(7));
               jTextField8.setText(rs.getString(8));
               jTextField9.setText(rs.getString(9));
               jTextField10.setText(rs.getString(10));
               jTextField11.setText(rs.getString(11));
               jTextField12.setText(rs.getString(12));
                     }
          fg = b;
      
                 jButton1.addActionListener(new ActionListener() {
            
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            String pp, kp;
                           pp= jTextField1.getText();
                            kp=jTextField2.getText();
                            try {
                         
                                
                                 st.executeUpdate("UPDATE reports2016 SET id='"+pp+"',the_content_of_the_record='" +kp + "'    WHERE id='" +b + "' ");
                                } catch (SQLException ex) {
                                Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
                            }
       
            }
        });
             // pack();
              //st.close();
      } catch (SQLException ex) {
          Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
      }
          }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2015, 18:16
Помогаю со студенческими работами здесь

Как сделать в программе выход при нажатии на кнопку?
Как с помощью mouseclicked в java сделать выход из программы при нажатии на кнопку?

При нажатии на кнопку открывается картинка в новой форме
Здравствуйте , подскажите пожалуйста, не могу сообразить как сделать, у меня при нажатии на кнопку открывается картинка в новой форме , как...

Как сделать чтоб при нажатии на кнопку на 1 секунду менялся фон
Здравствуйте. Я новичок в java, пока много чего не понимаю, особенно с потоками беда. Помогите реализовать одну штуку. В общем есть...

Как у кнопки (JButton) поменять иконку при нажатии на эту кнопку?
подскажите пожалуйста, как у кнопки (JButton) поменять иконку при нажатии на эту кнопку? Заранее спасибо!

Необходимо при нажатии на кнопку на web странице запустить программу, установленную у КЛИЕНТА
Доброе время суток! Интересная задачка мне тут попалась... Необходимо при нажатии на кнопку на web странице запустить программу,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru