1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 24
1

Создать дочернее окно дочернего окна

04.12.2010, 18:30. Показов 2743. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема такая. Нужно создать дочернее окно дочернего окна.
Вот тут создается одно дочернее окно от главного, а по логике еще должно дочернее окно от дочернего. Но идет ошибка в определении классов. Как решить проблему?

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
51
52
53
54
55
56
57
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class TestFrame extends JFrame {
    public static void main(String[] args) {
        final TestFrame mf = new TestFrame();
        JPanel jp = new JPanel();
        JButton but = new JButton("First window");
        but.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                MainDialog md = new MainDialog(mf);
                md.setVisible(true);
            }
        });
        jp.add(but);
        mf.setContentPane(jp);
        mf.pack();
 
        mf.setVisible(true);
    }
 
    private static class MainDialog extends JDialog {
        public MainDialog(final TestFrame mf) {
            super(mf, true);
            JPanel panel = new JPanel();
            JButton okButton = new JButton("Second window");
            okButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    OKDialog md = new OKDialog(mf);
                    mf.setVisible(false);
                }
            });
            panel.add(okButton);
            setContentPane(panel);
            pack();
        }
    }
}
 
private static class OKDialog extends JDialog {
    public OKDialog(final TestFrame mf) {
        super(mf, true);
        JPanel panel = new JPanel();
        JButton Button3 = new JButton("Third window");
        Button3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                mf.setVisible(false);
            }
        });
        panel.add(Button3);
        setContentPane(panel);
        pack();
    }
}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2010, 18:30
Ответы с готовыми решениями:

Дочернее окно не рисует текст
Есть главное окно (апплет) и есть дочернее, которое создаёт апплет в виде создания наследника...

Swing: создание и закрытие дочернего окна
Всем здравствуйте! Вопрос наверняка глупый, но с Java Swing я познакомился недавно Есть основной...

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

Запуск скрипта из дочернего окна аплета
Ситуация следующая:есть некоторое веб-приложение(asp-допустим+javascript) которое открывает окна в...

4
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
04.12.2010, 18:53 2
Akord, в чем именно проблема и почему бы не сделать три независимых, а не вложенных класса и создавать их объекты только там где надо?
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 24
04.12.2010, 19:00  [ТС] 3
не понимаю. создал одно окно по примеру, хочу сделать по аналогии - не работает. напишите пожалуйста подробнее
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
04.12.2010, 22:26 4
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
51
52
53
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 
import java.util.Timer;
import java.util.TimerTask;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
 
public class Main implements ActionListener {
 
   static int number = 0;
 
   public Main() {
      initComponents();
      ++number;
   }
 
   private JFrame viewForm;
 
   private void initComponents() {
      viewForm = new JFrame(String.valueOf(number));
      viewForm.setSize(150, 100);
      viewForm.setVisible(true);
      viewForm.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
 
      JButton start = new JButton();
      start.addActionListener(this);
      start.setActionCommand("open");
      start.setText("Open");
      start.setEnabled(true);
 
      viewForm.getContentPane().add(start);
   }
 
   public void actionPerformed(ActionEvent action) {
      if (action.getActionCommand().equals("open")) {
         new Main();
      }
   }
 
   public static void main(String[] args) {
 
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            new Main();
         }
      });
   }
}
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 24
06.12.2010, 19:14  [ТС] 5
спасибо,буду разбираться)

Добавлено через 22 часа 20 минут
а как сделать чтобы эти 3 окна не были одинаковыми, а также четко определялись какое главное, а какое дочернее, то есть пока не поработаем с дочерним,главное не доступно?
Может быть, кто-нибудь знает, как изменить мой код, чтобы он заработал? Почему принцип главное-дочернее не работает для случая дочернее-дочернее?

Добавлено через 17 минут
ответ: добавить
Java
1
md.setVisible(true);
в листенер MainDialoga
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2010, 19:14
Помогаю со студенческими работами здесь

Создать окно, которое нельзя закрыть.(Окно без крестика)
Как мне создать окно которое нельзя закрыть крестом.(Заблокировать крест, setEnabled(false) что то...

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

Создать дочернее окно из программы (окно внутри окна)
Люди, помогите плиз!!!!!!!!!!!!! Подскажите, как в Lazaruse создать дочернее окно из программы...

Создание окна. Дочернее окно
Задание: создать окно с менюшкой, при нажатии на менюшку открывается дочернее окно, вроде все...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru