5 / 5 / 0
Регистрация: 29.04.2010
Сообщений: 88

Frame два окна

25.11.2011, 22:40. Показов 16469. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Вопрос по поводу создания не одного окна при помощи Jframe.

это программа создаёт окно с кнопкой , при нажатии создаёт ещё одно идентичное окно, а при закрытии окно закрываются все. Как сделать чтобы закрывался только конкретное окно, а другие нет.

вот код:

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
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
 
 class MyFrame extends JFrame{
    
    public MyFrame(int a, int b)
    {
        setTitle("окно");                   // название созданного окна
        
        setBounds(a,b,a,b);                          // положение и размер окна
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // обработка события закрытия окна 
        setResizable(false);                             // запрет изменений размеров окна  
        MyPanel pan = new MyPanel();
        add(pan);
        setVisible(true);                                // отобрадение окна
    }   
}
 
 class MyPanel extends JPanel
   {
    public MyPanel()
     {
       JButton  button = new JButton("Создать новое окно");
       add(button);
       button.addActionListener(listener);
     }
       ActionListener listener= new ActionListener()
               {
                   public void actionPerformed(ActionEvent event)
                   {
                       Random rnd = new Random();
                       MyFrame frame = new MyFrame(rnd.nextInt(800), rnd.nextInt(500));
                       
                   }
               };
   }
 
 public class main
{
   public static void main(String[] args)
   {
       MyFrame frame = new MyFrame(100,100);
   }
}
А может с Jframe такое не проделаешь и лучше использовать диалог???
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.11.2011, 22:40
Ответы с готовыми решениями:

Перезагрузка окна (Frame)
Нужна функция для перезагрузки Frame. Желательно без закрытия окна.

Обновление данных на Frame из другого Frame
Помогите реализовать: есть MainFrame и SettingsFrame. Нужно что бы при нажатии Button на SettingsFrame обновилась (перерисовалась) таблица...

Mozilla: одна сессия на два окна
помогите разобраться. приложение веб работает не корректно если пользователь пробует войти одновременно под 2 логинами в приложение с...

12
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
25.11.2011, 23:49
Думаю вся проблема в этом:
Java
1
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Добавлено через 2 минуты
И так как вы нигде не ссылаетесь на вновь созданный JFrame вместо
Java
1
MyFrame frame = new MyFrame(rnd.nextInt(800), rnd.nextInt(500));
лучше написать
Java
1
new MyFrame(rnd.nextInt(800), rnd.nextInt(500));
0
5 / 5 / 0
Регистрация: 29.04.2010
Сообщений: 88
26.11.2011, 01:42  [ТС]
Цитата Сообщение от John_Pa9JIbHuK Посмотреть сообщение
1 setDefaultCloseOperation(JFrame.EXIT_ON_ CLOSE);
так это не зависит вроде как, просто явно указываим сласс static переменной(или чено-то там)

мы сча проверимм)))

Добавлено через 13 минут
ДА ты прав, я не так в начале понял))) имеется как я понял четыри перенные для закрытия , но типо поставить их вместо EXIT_ON_CLOSE не получится , нуна прои нициализировать. может я ошибаюсь.
0
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
26.11.2011, 01:50
Цитата Сообщение от /*Alexander*/ Посмотреть сообщение
имеется как я понял четыри перенные для закрытия , но типо поставить их вместо EXIT_ON_CLOSE не получится , нуна прои нициализировать. может я ошибаюсь.
Учись писать грамотнее и понятнее, я понимаю что мысли словами не предать, но все же
Самое первое окно которое создается в main должно быть с setDefaultCloseOperation(JFrame.EXIT_ON_ CLOSE), а те что на кнопку без этого.
Для этого в конструкторе передавай еще один параметр(bool), в котором указываешь, нужно ли setDefaultCloseOperation или нет.
Я думаю мысль ясна.

Добавлено через 2 минуты
Java
1
public MyFrame(int a, int b, boolean freeOnClose)
1
5 / 5 / 0
Регистрация: 29.04.2010
Сообщений: 88
26.11.2011, 17:59  [ТС]
О спасибо , Всё окей. НО теперь не понятно ,если мы создаём frame без setDefaultCloseOperation(JFrame.EXIT_ON_ CLOSE), то он все равно закрывается, зачет тогда его писать. Можно объяснение?

Я как понимаю , мы пишим setDefaultCloseOperation(JFrame.EXIT_ON_ CLOSE), для того чтобы смсиемная кнопка закрытия отреогировала .
0
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
26.11.2011, 23:35
Без setDefaultCloseOperation(JFrame.EXIT_ON_ CLOSE) при закрытии фрейма приложение не завершится.
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
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
 
 class MyFrame extends JFrame{
    
    public MyFrame(int a, int b, boolean freeOnClose)
    {
        setTitle("окно");                   // название созданного окна
        
        setBounds(a,b,a,b);                          // положение и размер окна
        if (freeOnClose)
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // обработка события закрытия окна 
        setResizable(false);                             // запрет изменений размеров окна  
        MyPanel pan = new MyPanel();
        add(pan);
        setVisible(true);                                // отобрадение окна
    }   
}
 
 class MyPanel extends JPanel
   {
    public MyPanel()
     {
       JButton  button = new JButton("Создать новое окно");
       add(button);
       button.addActionListener(listener);
     }
       ActionListener listener= new ActionListener()
               {
                   public void actionPerformed(ActionEvent event)
                   {
                       Random rnd = new Random();
                       MyFrame frame = new MyFrame(rnd.nextInt(800), rnd.nextInt(500), false);
                       
                   }
               };
   }
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
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
/**
 *
 * @author Dreambit
 */
public class Main {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws FileNotFoundException {
 
 
        MyFrame frame = new MyFrame(100,100, true);
    }
 
}
Добавлено через 1 минуту
В данном случае, приложение завершится тока в случаи завершения первого созданного фрема, того, который создан в main, так как freeOnClose мы поставили в true
1
5 / 5 / 0
Регистрация: 29.04.2010
Сообщений: 88
27.11.2011, 01:19  [ТС]
так я и написал, но если запустить её и открыть второе окно, а потом закрыть первое, то второе останется висеть, а это как то неправельно. как сделать так , чтобы при открытии второго окна первое стало недоступно,т.е. нельзя закрыть его и разрешить только после закрытия второго.
0
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
27.11.2011, 06:28
/*Alexander*/
Не знаю как у тебя, но при закрытии первого, остальные окна закрываются, по крайней мере у меня.
Цитата Сообщение от /*Alexander*/ Посмотреть сообщение
чтобы при открытии второго окна первое стало недоступно
Используй тогда JDialog, у него есть модальный режим.
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
27.11.2011, 13:44
Если хотите сделать с помощью одного класса два окна, одно из которых EXIT_ON_CLOSE, а второе DISPOSE_ON_CLOSE - не получится.
Делайте еще один класс, наследуйте его от первого, и переопределите метод setDefaultCloseOperation с:
Java
1
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
на:
Java
1
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
1
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
27.11.2011, 14:20
Цитата Сообщение от _ViPeR_ Посмотреть сообщение
переопределите метод setDefaultCloseOperation
ну наверное понятие переопределение метода тут неуместно
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
27.11.2011, 14:26
согласен, ступил
Правильнее будет "вызвать метод с другим аргументом"
0
5 / 5 / 0
Регистрация: 29.04.2010
Сообщений: 88
27.11.2011, 19:37  [ТС]
Цитата Сообщение от John_Pa9JIbHuK Посмотреть сообщение
Не знаю как у тебя, но при закрытии первого, остальные окна закрываются, по крайней мере у меня.

ДА все норм, это я чета начал изменять код и закомментировал вот это
Java
1
2
if(freeOnClose)
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Цитата Сообщение от _ViPeR_ Посмотреть сообщение
Если хотите сделать с помощью одного класса два окна, одно из которых EXIT_ON_CLOSE, а второе DISPOSE_ON_CLOSE - не получится.
Делайте еще один класс, наследуйте его от первого, и переопределите метод setDefaultCloseOperation с:
А может можно написать так
Java
1
2
3
if(freeOnClose)
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // обработка события закрытия окна 
        else    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
0
0 / 0 / 0
Регистрация: 27.04.2016
Сообщений: 2
27.04.2016, 02:23
У меня похожая проблема.
У меня к ноутбуку подключен монитор и необходимо чтобы одно окно открылось на одном мониторе, а второе на другом.
Возможно кто то знает как это сделать?
Буду очень благодарен за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.04.2016, 02:23
Помогаю со студенческими работами здесь

Frame
Добрый вечер! Встали несколько вопросов при создание простой формы: public static void main(String args) { Frame f = new...

Не прорисовывается окно. Два окна, при тройном переходе перестают прорисовываться. Консоль ошибок не пишет
Приветствую. Вопрос от новичка. Пробую сделать записную книжку JavaFX. Два окна: первое - главное, второе - для написания заметки. ...

Изменение размера окна Frame'а
Мир Вашему дому знатоки, имею следующую фреймовую структуру <FRAMESET id=outterframe ROWS='30,*' FRAMEBORDER = YES BORDERCOLOR='#5F5F7F'...

Как передать текст из главного окна во Frame
Столкнулся с следующей проблемой: у меня на главной форме установлены Frame, TextBox и кнопка, во Frame подгружена страница, на которой...

Frame не могу передать значение из родительского окна в дочернее (обе страницы на моем домене)
Вот так почему-то не получается: дочерняя страница: <input type="text" id="lol"> Родительская...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru