powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / переключение между окнами
19 сообщений из 19, страница 1 из 1
переключение между окнами
    #38998281
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер.
Из основного окна открываю второстепенное и скрываю основное:


private class PicActionListener implements MouseListener {
@Override
public void mouseClicked(MouseEvent e) {
if(e.getSource().equals(L_pic))
setVisible(false);
if (theory == null) {
theory = new theoryN();
}
if (!theory.isVisible()) {
theory.setVisible(true); }

Хотелось из второстепенного вернуть в основное, не создавая нового экземпляра, а вернув скрытое окно. Можно ли это как-то сделать?
...
Рейтинг: 0 / 0
переключение между окнами
    #38998285
spider1581
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Timein, попробуйте в конструктор дочернего окна передавать ссылку на родительское окно. И тогда вы получите управление родительским окном из дочернего.
...
Рейтинг: 0 / 0
переключение между окнами
    #38998288
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
переключение между окнами
    #38998310
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, немного не понял вашу мысль про диалоговые окна

spider1581, правильно ли я понял, что вы имеете ввиду следующее:

public class ChildFrame extends JFrame{

ParentFrame parent;

public ChildFrame(ParentFrame parent){
this.parent=parent;
}
...
Рейтинг: 0 / 0
переключение между окнами
    #38998314
spider1581
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Timein, да. а в методах дочернего окна уже писать
Код: java
1.
this.parent.setVisible(true);
...
Рейтинг: 0 / 0
переключение между окнами
    #38998320
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spider1581, вот с дочерним окном у меня как раз проблем не вышло)
Но код, написанный в ParentFrame

private class PicActionListener implements MouseListener {
@Override
public void mouseClicked(MouseEvent e) {
if(e.getSource().equals(L_pic))
setVisible(false);
if (theory == null) {
theory = new theoryN();
}
if (!theory.isVisible()) {
theory.setVisible(true); }

теперь ругается в месте theory = new theoryN(), потому что хочет указание на ParentFrame.
...
Рейтинг: 0 / 0
переключение между окнами
    #38998329
spider1581
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Timeinтеперь ругается в месте theory = new theoryN(), потому что хочет указание на ParentFrame.
ну так дайте ему это указание...я так понял theory это ваш дочерний фрейм? В его конструкторе вы прописали, что ему нужна ссылка на родителя. При инициализации дочернего фрейма нужно написать
Код: java
1.
theory= new theoryN(this)
...
Рейтинг: 0 / 0
переключение между окнами
    #38998373
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, theoryN - дочерний класс
А разве this в данном случае не PicActionListener?
...
Рейтинг: 0 / 0
переключение между окнами
    #38998374
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В смысле, theory дочерний фрейм)
...
Рейтинг: 0 / 0
переключение между окнами
    #38998378
spider1581
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TimeinА разве this в данном случае не PicActionListener?
Нет, почитайте что такое this в java и как его использовать.
...
Рейтинг: 0 / 0
переключение между окнами
    #38998386
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spider1581 , наверное, я что-то не до конца понимаю
...
Рейтинг: 0 / 0
переключение между окнами
    #38998392
spider1581
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Timeinspider1581 , наверное, я что-то не до конца понимаю
эм...вы для слушателя целый класс используете...зачем если не секрет? Не досмотрел, да, в данном конкретном случаем this это обращение к классу слушателя. Где вы его используете?
...
Рейтинг: 0 / 0
переключение между окнами
    #38998403
spider1581
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Timein, если все же хотите использовать класс для слушателя, то в классе главной формы:
Код: java
1.
2.
3.
4.
5.
6.
7.
public class MainForm extends javax.swing.JFrame {
    private MainForm mf;
    
    public MainForm(){
        this.mf=this;
    }
}


И в слушатель передавайте переменную mf.
...
Рейтинг: 0 / 0
переключение между окнами
    #38998414
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spider1581эм...вы для слушателя целый класс используете...
Вероятно, потому что еще учусь и не всегда зню, как лучше сделать)

spider1581зачем если не секрет? Не досмотрел, да, в данном конкретном случаем this это обращение к классу слушателя. Где вы его используете?

Выглядит это приблизительно так:

Код: 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 class MainFrame extends JFrame{

...
public MainFrame (){
...
label1.addMouseListener(new PicActionListener());
label2.addMouseListener(new PicActionListener());
label3.addMouseListener(new PicActionListener());
}
 private class PicActionListener implements MouseListener {

        @Override
        public void mouseClicked(MouseEvent e) {
        if(e.getSource().equals(label1)){
           setVisible(false); 
         if (theory == null) {	
            theory = new TheoryNote(this);
    	}
        if (!theory.isVisible()) {
            theory.setVisible(true);  }

        }
       if(e.getSource().equals(label2)){
               //  КОД
         }
       if(e.getSource().equals(label3)){
             //  КОД
           }
}

}



Я бы привел полный код программы, но он достаточно большой
...
Рейтинг: 0 / 0
переключение между окнами
    #38998417
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spider1581Timein, если все же хотите использовать класс для слушателя, то в классе главной формы:
Код: java
1.
2.
3.
4.
5.
6.
7.
public class MainForm extends javax.swing.JFrame {
    private MainForm mf;
    
    public MainForm(){
        this.mf=this;
    }
}


И в слушатель передавайте переменную mf.

Была такая мысль, но засомневался и не стал пробовать) Смотрю, что зря)
...
Рейтинг: 0 / 0
переключение между окнами
    #38998434
spider1581
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Timein, можно и так оставить, но тогда вы создаете кучу одинаковых экземпляров класса, что, как мне кажется, не есть хорошо ибо чем больше созданных классов и переменных, тем больше ваша программа будет потреблять ресурсов системы.
А можно для каждого лейбела добавить метод слушателя, в среде NetBeans например это делается ПКМ по нужному лейблу и выбираете нужное событие. Плюс данного метода в том, что вы используете минимум ресурсов.
...
Рейтинг: 0 / 0
переключение между окнами
    #38998440
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spider1581Timein, можно и так оставить, но тогда вы создаете кучу одинаковых экземпляров класса, что, как мне кажется, не есть хорошо ибо чем больше созданных классов и переменных, тем больше ваша программа будет потреблять ресурсов системы.
А можно для каждого лейбела добавить метод слушателя, в среде NetBeans например это делается ПКМ по нужному лейблу и выбираете нужное событие. Плюс данного метода в том, что вы используете минимум ресурсов.
Код: java
1.
2.
3.
4.
5.
PicActionListener au= new PicActionListener();
pNote.addMouseListener(au);
tKl.addMouseListener(au);
pKl.addMouseListener(au);
back.addMouseListener(au);


Или я что-то неправильно понял?
...
Рейтинг: 0 / 0
переключение между окнами
    #38998444
spider1581
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Timein
Код: java
1.
2.
3.
4.
5.
PicActionListener au= new PicActionListener();
pNote.addMouseListener(au);
tKl.addMouseListener(au);
pKl.addMouseListener(au);
back.addMouseListener(au);


Или я что-то неправильно понял?
Ну здесь вы используете один экземпляр класса для всех лейбелов, т.е. по нажатию на любой из лейбелов, будь то back или pNote, вы будете обращаться к одному и тому же методу mouseClicked. Так тоже можно сделать. Все зависит от конкретной задачи, я же не знаю, что вы хотите сделать.
...
Рейтинг: 0 / 0
переключение между окнами
    #38998859
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spider1581, благодарю)
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / переключение между окнами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]