Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открытие нового фрейма, Открытие фрейма из другого фрейма 
V
    Опции темы
izver84
Дата 18.2.2008, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 5.11.2007

Репутация: 1
Всего: 1



Здарасте.
Я начинаю программировать в яве,простите за глуппый вопрос. У меня есть главный frame, который содержит меню. Мне нужно, что-бы после нажатия на меню открылся другой frame.

первый frame
Код

import javax.swing.SwingUtilities;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import java.awt.Dimension;
import javax.swing.JMenu;

public class Frame1 extends JFrame {

    private static final long serialVersionUID = 1L;

    private JPanel jContentPane = null;

    private JMenuBar jJMenuBar = null;

    private JMenu open = null;

    /**
  * This method initializes jJMenuBar    
  *  
  * @return javax.swing.JMenuBar    
  */
    private JMenuBar getJJMenuBar() {
  if (jJMenuBar == null) {
    jJMenuBar = new JMenuBar();
    jJMenuBar.setPreferredSize(new Dimension(0, 25));
    jJMenuBar.add(getOpen());
  }
  return jJMenuBar;
    }

    /**
  * This method initializes open    
  *  
  * @return javax.swing.JMenu    
  */
    private JMenu getOpen() {
  if (open == null) {
    open = new JMenu();
    open.setText("open");
  }
  return open;
    }

    /**
  * @param args
  */
    public static void main(String[] args) {
  // TODO Auto-generated method stub
  SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    Frame1 thisClass = new Frame1();
    thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    thisClass.setVisible(true);
    }
  });
    }

    /**
  * This is the default constructor
  */
    public Frame1() {
  super();
  initialize();
    }

    /**
  * This method initializes this
  * 
  * @return void
  */
    private void initialize() {
  this.setSize(300, 200);
  this.setJMenuBar(getJJMenuBar());
  this.setContentPane(getJContentPane());
  this.setTitle("JFrame");
    }

    /**
  * This method initializes jContentPane
  * 
  * @return javax.swing.JPanel
  */
    private JPanel getJContentPane() {
  if (jContentPane == null) {
    jContentPane = new JPanel();
    jContentPane.setLayout(null);
  }
  return jContentPane;
    }

}

второй frame
Код

import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;

public class Frame2 extends JFrame {

    private static final long serialVersionUID = 1L;

    private JPanel jContentPane = null;

    /**
  * @param args
  */
    public static void main(String[] args) {
  // TODO Auto-generated method stub
  SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    Frame2 thisClass = new Frame2();
    thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    thisClass.setVisible(true);
    }
  });
    }

    /**
  * This is the default constructor
  */
    public Frame2() {
  super();
  initialize();
    }

    /**
  * This method initializes this
  * 
  * @return void
  */
    private void initialize() {
  this.setSize(300, 200);
  this.setContentPane(getJContentPane());
  this.setTitle("JFrame");
    }

    /**
  * This method initializes jContentPane
  * 
  * @return javax.swing.JPanel
  */
    private JPanel getJContentPane() {
  if (jContentPane == null) {
    jContentPane = new JPanel();
    jContentPane.setLayout(new BorderLayout());
  }
  return jContentPane;
    }

}



--------------------
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно. 
PM MAIL   Вверх
LSD
Дата 18.2.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Регистрируешь в нужном пункте меню свой ActionListener, а еще лучше создаешь свой Action. И в нем:
Код

Frame2 frame2 = new Frame2();
frame2.pack();
Frame2.setVisible(true);



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
izver84
Дата 18.2.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 5.11.2007

Репутация: 1
Всего: 1



Не открывается

Попробывал dialog


Код

import java.awt.Dialog;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Frame1 extends JFrame {

    private static final long serialVersionUID = 1L;

    /*protected static final Dialog Frame = null;

    protected static final Dialog Frame1 = null;
*/
    private JPanel jContentPane = null;

    private JMenuBar jJMenuBar = null;

    private JMenu open = null;

    /**
  * This method initializes jJMenuBar    
  *  
  * @return javax.swing.JMenuBar    
  */
    private JMenuBar getJJMenuBar() {
  if (jJMenuBar == null) {
    jJMenuBar = new JMenuBar();
    jJMenuBar.setPreferredSize(new Dimension(0, 25));
    jJMenuBar.add(getOpen());
  }
  return jJMenuBar;
    }

    /**
  * This method initializes open    
  *  
  * @return javax.swing.JMenu    
  */
    private JMenu getOpen() {
  if (open == null) {
    open = new JMenu();
    open.setText("open");
    open.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent e) {
    //    System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
     Dialog dialog = new Dialog(Frame1.this);
//     init dialog
     dialog.setModal(true);
     dialog.setVisible(true);

    }
    });
  
    
  }
  return open;
    }

    /**
  * @param args
  */
    public static void main(String[] args) {
  // TODO Auto-generated method stub
  SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    Frame1 thisClass = new Frame1();
    thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    thisClass.setVisible(true);
    }
  });
    }

    /**
  * This is the default constructor
  */
    public Frame1() {
  super();
  initialize();
    }

    /**
  * This method initializes this
  * 
  * @return void
  */
    private void initialize() {
  this.setSize(300, 200);
  this.setJMenuBar(getJJMenuBar());
  this.setContentPane(getJContentPane());
  this.setTitle("JFrame");
    }

    /**
  * This method initializes jContentPane
  * 
  * @return javax.swing.JPanel
  */
    private JPanel getJContentPane() {
  if (jContentPane == null) {
    jContentPane = new JPanel();
    jContentPane.setLayout(null);
  }
  return jContentPane;
    }

}




и сам диалог

Код


import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDialog;
import javax.swing.JPanel;

public class Dialog extends JDialog   implements ActionListener{

    private static final long serialVersionUID = 1L;

    private JPanel jContentPane = null;

    /**
  * @param args
  */
    public static void main(String[] args) {
  // TODO Auto-generated method stub

    }

    /**
  * @param owner
  */
    public Dialog(Frame owner) {
  super(owner);
  initialize();
    }

    /**
  * This method initializes this
  * 
  * @return void
  */
    private void initialize() {
  this.setSize(300, 200);
  this.setVisible(false);
  this.setContentPane(getJContentPane());
    }

    /**
  * This method initializes jContentPane
  * 
  * @return javax.swing.JPanel
  */
    private JPanel getJContentPane() {
  if (jContentPane == null) {
    jContentPane = new JPanel();
    jContentPane.setLayout(new BorderLayout());
  }
  return jContentPane;
    }

    public void actionPerformed(ActionEvent arg0) {
  // TODO Auto-generated method stub
  
    }

}




результат тот-же

Это сообщение отредактировал(а) powerOn - 18.2.2008, 18:34


--------------------
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно. 
PM MAIL   Вверх
ilia1234
Дата 18.2.2008, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.6.2007

Репутация: нет
Всего: нет



Переименуй свой класс Dialog или убери из Frame1  
Код

import java.awt.Dialog;

Ты в ActionListener создаешь не свой Dialog, а "java.awt.Dialog".
Далее, в меню создаешь JMenuItem и ActionListener сажаешь на него.
Код

private JMenu getOpen() {
        if (open == null) {
            open = new JMenu();
            open.setText("open");
            
            JMenuItem item = new JMenuItem("dialog");
            item.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    // System.out.println("actionPerformed()"); // TODO
                    // Auto-generated Event stub actionPerformed()
//                    Dialog dialog = new Dialog(Frame1.this);
                    D1 dialog = new D1(Frame1.this);
                    // init dialog
                    dialog.setModal(true);
                    dialog.setVisible(true);
                }
            });            
            open.add(item);
        }
        return open;
    }

PM MAIL   Вверх
powerOn
Дата 18.2.2008, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 31
Всего: 159



izver84, какая то тебя мешанина, а не код. Хоть бы по нормальному оформил, лишнее все убрал, прежде чем на форум выкладывать.

Какой объект создается в строке 49 первого куска кода, с учетом вот этой строчки в начале:
Цитата(izver84 @  18.2.2008,  18:13 Найти цитируемый пост)
import java.awt.Dialog;

?

Вот тебе пример показа диалогового окна, просто скомпилируй и запусти.

Код

package test;

import javax.swing.JDialog;

public class NewJFrame extends javax.swing.JFrame {

    public NewJFrame() {
        initComponents();
        setLocationRelativeTo(null);
    }

    private void initComponents() {
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jMenu1.setText("File");
        jMenuItem1.setText("Show Dialog");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);
        jMenuBar1.add(jMenu1);
        setJMenuBar(jMenuBar1);
        pack();
    }

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
        JDialog dialog = new JDialog(this, "Simple Dialog.", true);
        dialog.setBounds(0, 0, 200, 100);
        dialog.setLocationRelativeTo(this);
        dialog.setVisible(true);
        dialog.pack();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }

    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
}




Это сообщение отредактировал(а) powerOn - 18.2.2008, 19:40


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
izver84
Дата 19.2.2008, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 5.11.2007

Репутация: 1
Всего: 1



powerOn, у тебя диалог описан в текущем классе. У меня диалог описан в другом классе.


--------------------
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно. 
PM MAIL   Вверх
powerOn
Дата 19.2.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 31
Всего: 159



Цитата(izver84 @  19.2.2008,  14:32 Найти цитируемый пост)
powerOn, у тебя диалог описан в текущем классе. У меня диалог описан в другом классе. 


Верно, но только в том примере что ты привел, ты вместо своего собственного диалога создаешь объект класса java.awt.Dialog.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
izver84
Дата 20.2.2008, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 5.11.2007

Репутация: 1
Всего: 1



Всем спасибо. ПРоблему решил. 


--------------------
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.