Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
2 / 2 / 0
Регистрация: 23.05.2015
Сообщений: 43

Передать значение переменной в другую форму

24.01.2016, 02:39. Показов 7221. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Был изучен инет, гугл не помог.

В форме1 есть переменная

Java
1
public int a;
которая при нажатии кнопки

Java
1
2
3
4
5
6
7
8
9
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:        
        try {
        a=Integer.valueOf(jTextField2.getText());
new NewJFrame2().setVisible(true);     
        }
        catch (NumberFormatException ex){
        JOptionPane.showMessageDialog(null,"Введите корректные данные!","Ошибка",JOptionPane.ERROR_MESSAGE);
        }
В другой форме
Java
1
2
3
4
5
private void formWindowActivated(java.awt.event.WindowEvent evt) {                                     
         private void formWindowActivated(java.awt.event.WindowEvent evt) {  
        NewJFrame1 forma1 = new NewJFrame1();        
System.out.println("a = "+forma1.a);
}
Выводит 0. Не могу понять почему....
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.01.2016, 02:39
Ответы с готовыми решениями:

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

Передать значение в другую форму
В форму читается значение S1 дальше нужно отредактировать и сохранить это введенное в форму значение, но не получается.В чем ошибка? ...

Передать значение таймера в другую форму
Столкнулся с проблемой, на первой форме есть таймер, который постоянно берет значение с класса. Есть вторая форма, где это значение...

6
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
24.01.2016, 11:10
Ну из того что вы нам показываете, вы создаёте еще один объект
Java
1
NewJFrame1 forma1 = new NewJFrame1();
ну и понятно что у вас там дефолтное значение. Вам надо не создавать новый объект, а обращаться уже к существующему.
Я вижу два варианта:
1) Если у вас есть один главные контроллер в котором вы вызываете и первое окно и второе, то тогда можно через get метод найти значение:
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
public class ControllerType {
    public static void main(String[] args) {
        new ControllerType();
    }
    
    // контроллер в котором происходит все действия
    ControllerType() {
        WindowOne wOne = new WindowOne();
        System.out.println(wOne.getWindowOne());
        WindowTwo wTow = new WindowTwo();
        System.out.println(wTow.getWindowTwo());
    }
 
    // класс в котором создаётся первая фрейма
    private static class WindowOne {
        int windowOne = 1;
 
        public int getWindowOne() {
            return windowOne;
        }
    }
    
    // класс в котором создаётся вторая фрейма
    private static class WindowTwo {
        int windowTwo = 2;
 
        public int getWindowTwo() {
            return windowTwo;
        }
 
    }
}
2) Если нет, но второе окно вызывается только через первое, то объект первого окна передавать в конструкторе и тоже обращаться к нему через get:
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
public class ControllerType {
    public static void main(String[] args) {
        WindowOne wOne = new WindowOne();
        // передаём объект певой фрейме в конструкторе второй
        WindowTwo wTwo = new WindowTwo(wOne);
        // обращаемся к переменной первой вреймы
        System.out.println(wTwo.getwOne().getWindowOne());
    }
 
    // класс в котором создаётся первая фрейма
    private static class WindowOne {
        int windowOne = 1;
 
        public int getWindowOne() {
            return windowOne;
        }
    }
 
    // класс в котором создаётся вторая фрейма
    private static class WindowTwo {
        int windowTwo = 2;
        WindowOne wOne;
 
        WindowTwo(WindowOne wOne) {
            this.wOne = wOne;
        }
 
        public int getWindowTwo() {
            return windowTwo;
        }
 
        public WindowOne getwOne() {
            return wOne;
        }
 
    }
}
1
2 / 2 / 0
Регистрация: 23.05.2015
Сообщений: 43
24.01.2016, 12:16  [ТС]
Спасибо за ответ, но у меня не работает

В форме 1

Java
1
2
3
4
public class NewJFrame1 extends javax.swing.JFrame {
        int windowOne = 1; 
        public int getWindowOne() {return windowOne;}
}
В форме 2

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class NewJFrame2 extends javax.swing.JFrame {
int windowTwo = 2;
        NewJFrame1 wOne;
 
        NewJFrame2(NewJFrame1 wOne) {
            this.wOne = wOne;
        }
 
        public int getWindowTwo() {
            return windowTwo;
        }
 
        public NewJFrame1 getwOne() {
            return wOne;
        }
}
Отдельный класс

Java
1
2
3
4
5
6
7
8
9
public class ControllerType {
    public static void main(String[] args) {
        NewJFrame1 wOne = new NewJFrame1();
        // передаём объект певой фрейме в конструкторе второй
        NewJFrame2 wTwo = new NewJFrame2(wOne);
        // обращаемся к переменной первой вреймы
        System.out.println(wTwo.getwOne().getWindowOne());
    }    
}
Вложения
Тип файла: zip JavaApplication4.zip (31.1 Кб, 11 просмотров)
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
24.01.2016, 12:20
В смысле не работает? Выводи 1? Выводит.
0
2 / 2 / 0
Регистрация: 23.05.2015
Сообщений: 43
24.01.2016, 12:27  [ТС]
Doctor_, у меня ничего не выводит

run:
СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 28 секунды)
1
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
24.01.2016, 12:28
Ну плохо, я запустил ваш код, у меня всё работает. Запускаете что-то не то. Или не запускаете а просто билдите.
0
2 / 2 / 0
Регистрация: 23.05.2015
Сообщений: 43
24.01.2016, 12:32  [ТС]
Не знаю, нажала Очистить и собрать проект а потом Запустить проект все равно ничего не выводит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.01.2016, 12:32
Помогаю со студенческими работами здесь

Передать значение textBox в другую форму
Есть textBox1(логин), мы туда вводим значение (наш логин), и оно должно передаться в другую форму в label1, т.е label1 Должен остаться с...

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

Как передать значение в другую форму (класс)
Я только начинаю изучать c#, в форме создаю метод и в этом методе переменной значение присваиваю и вот не могу понять как в другую...

Передать значение переменной из одной функции в другую
Доброго времени суток. Мне нужно передать значение переменных из одной функции в другую. Простой вызов функции с аргументами не подходи,...

Передать значение переменной в из одной функции в другую
День добрый. Подскажите, имеется код. function time_two(status) { var timeend = new Date(<?php echo $end_date; ?>); ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru