Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / переключение между окнами / 19 сообщений из 19, страница 1 из 1
02.07.2015, 19:30
    #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
02.07.2015, 19:35
    #38998285
spider1581
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переключение между окнами
Timein, попробуйте в конструктор дочернего окна передавать ссылку на родительское окно. И тогда вы получите управление родительским окном из дочернего.
...
Рейтинг: 0 / 0
02.07.2015, 19:45
    #38998288
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переключение между окнами
...
Рейтинг: 0 / 0
02.07.2015, 20:26
    #38998310
Timein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переключение между окнами
Blazkowicz, немного не понял вашу мысль про диалоговые окна

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

public class ChildFrame extends JFrame{

ParentFrame parent;

public ChildFrame(ParentFrame parent){
this.parent=parent;
}
...
Рейтинг: 0 / 0
02.07.2015, 20:32
    #38998314
spider1581
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переключение между окнами
Timein, да. а в методах дочернего окна уже писать
Код: java
1.
this.parent.setVisible(true);
...
Рейтинг: 0 / 0
02.07.2015, 20:45
    #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
02.07.2015, 20:57
    #38998329
spider1581
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переключение между окнами
Timeinтеперь ругается в месте theory = new theoryN(), потому что хочет указание на ParentFrame.
ну так дайте ему это указание...я так понял theory это ваш дочерний фрейм? В его конструкторе вы прописали, что ему нужна ссылка на родителя. При инициализации дочернего фрейма нужно написать
Код: java
1.
theory= new theoryN(this)
...
Рейтинг: 0 / 0
02.07.2015, 21:49
    #38998373
Timein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переключение между окнами
Да, theoryN - дочерний класс
А разве this в данном случае не PicActionListener?
...
Рейтинг: 0 / 0
02.07.2015, 21:50
    #38998374
Timein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переключение между окнами
В смысле, theory дочерний фрейм)
...
Рейтинг: 0 / 0
02.07.2015, 21:53
    #38998378
spider1581
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переключение между окнами
TimeinА разве this в данном случае не PicActionListener?
Нет, почитайте что такое this в java и как его использовать.
...
Рейтинг: 0 / 0
02.07.2015, 22:10
    #38998386
Timein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переключение между окнами
spider1581 , наверное, я что-то не до конца понимаю
...
Рейтинг: 0 / 0
02.07.2015, 22:20
    #38998392
spider1581
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переключение между окнами
Timeinspider1581 , наверное, я что-то не до конца понимаю
эм...вы для слушателя целый класс используете...зачем если не секрет? Не досмотрел, да, в данном конкретном случаем this это обращение к классу слушателя. Где вы его используете?
...
Рейтинг: 0 / 0
02.07.2015, 22:33
    #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
02.07.2015, 22:43
    #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
02.07.2015, 22:46
    #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
02.07.2015, 23:05
    #38998434
spider1581
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переключение между окнами
Timein, можно и так оставить, но тогда вы создаете кучу одинаковых экземпляров класса, что, как мне кажется, не есть хорошо ибо чем больше созданных классов и переменных, тем больше ваша программа будет потреблять ресурсов системы.
А можно для каждого лейбела добавить метод слушателя, в среде NetBeans например это делается ПКМ по нужному лейблу и выбираете нужное событие. Плюс данного метода в том, что вы используете минимум ресурсов.
...
Рейтинг: 0 / 0
02.07.2015, 23:11
    #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
02.07.2015, 23:18
    #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
03.07.2015, 13:18
    #38998859
Timein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переключение между окнами
spider1581, благодарю)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / переключение между окнами / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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