2013-11-19 4 views
1

Я пытаюсь достичь существующей формы, которую я сделал из другой формы. Я хочу нажать кнопку и отобразить другую форму. Вот что я написали:Java GUI: Как открыть существующую форму?

import javax.swing.JFrame; 

public class CustomerUI extends JFrame { 

    public CustomerUI(java.awt.Frame parent, boolean modal) 
    {   
     initComponents();   
     setTitle("Customer Data Input"); 
     setLocationRelativeTo(null); 
     pack(); 
     setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     setVisible(true); 
    } 

    @SuppressWarnings("unchecked") 

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
     Customer c = new Customer(jTextField1.getText(), jTextField2.getText(), jTextField3.getText()); 
     CinemaUI form = new CinemaUI(); 

     form.CUST.SetName(jTextField1.getText()); //Customer's Name 
     form.CUST.SetID(jTextField2.getText()); //Customer's ID 
     form.CUST.SetCard(jTextField3.getText()); //Customer's card 
     form.NUM_OF_SEATS = Integer.parseInt(jTextField4.getText()); //Number of seats 

     form.pack(); //Shows the next Form 
     form.setVisible(true); 
     CustomerUI.this.setVisible(false); //Hides this Form 
    }           

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 


     /* Create and display the dialog */ 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       CustomerUI dialog = new CustomerUI(new javax.swing.JFrame(), true); 
       dialog.addWindowListener(new java.awt.event.WindowAdapter() { 
        @Override 
        public void windowClosing(java.awt.event.WindowEvent e) { 
         System.exit(0); 
        } 
       }); 
       dialog.setVisible(true); 
      } 
     }); 
    }     
} 

CinemaUI - это название формы, которую я хотел бы открыть.

После нажатия jButton1 (один я хочу, чтобы открыть новое окно), я получаю следующее сообщение об ошибке:

Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException: Not supported yet. 
    at my.Cinema.CinemaUI.<init>(CinemaUI.java:30) 
    at my.Cinema.CustomerUI.jButton1ActionPerformed(CustomerUI.java:126) 
    at my.Cinema.CustomerUI.access$100(CustomerUI.java:11) 
    at my.Cinema.CustomerUI$2.actionPerformed(CustomerUI.java:60) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
    at java.awt.Component.processMouseEvent(Component.java:6505) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3320) 
    at java.awt.Component.processEvent(Component.java:6270) 
    at java.awt.Container.processEvent(Container.java:2229) 
    at java.awt.Component.dispatchEventImpl(Component.java:4861) 
    at java.awt.Container.dispatchEventImpl(Container.java:2287) 
    at java.awt.Component.dispatchEvent(Component.java:4687) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 
    at java.awt.Container.dispatchEventImpl(Container.java:2273) 
    at java.awt.Window.dispatchEventImpl(Window.java:2719) 
    at java.awt.Component.dispatchEvent(Component.java:4687) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735) 
    at java.awt.EventQueue.access$200(EventQueue.java:103) 
    at java.awt.EventQueue$3.run(EventQueue.java:694) 
    at java.awt.EventQueue$3.run(EventQueue.java:692) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
    at java.awt.EventQueue$4.run(EventQueue.java:708) 
    at java.awt.EventQueue$4.run(EventQueue.java:706) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 

Edit:
Я попытаюсь объяснить, что моя цель состоит в том: Определенных человек хочет заказать билеты в кино. Я сохраняю его данные (имя, кредитную карту и т. Д.) С помощью текстовых полей и приступаю к выбору мест для человека. Первое окно, на котором я смотрю, - это одно с текстовыми полями, и после того, как я нажму кнопку, я хочу, чтобы окно показывало список доступных мест для отображения (CinemaUI).

Еще раз спасибо за помощь, извините, что так долго.

+3

Вы должны предоставить больше информации о том, что вы делаете, но, не одна формы открыть другую форму и скрыть itseft, вы должны иметь какое-то контроллер, открытие и закрытие форм. – CaveCoder

+0

Я отредактировал сообщение немного, надеюсь, его достаточно. – Villager

ответ

1

Я думаю, что вы ищете Somthing так:

public class Form extends JFrame { 

    public Form(){ 
     JButton show = new JButton("show Form2"); 
     show.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       new Form2(); 
       Form.this.setVisible(false); 
      } 

     }); 
     setTitle("Form 1"); 
     getContentPane().add(show,BorderLayout.CENTER); 
     setLocationRelativeTo(null); 
     pack(); 
     setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     setVisible(true); 
    } 

    class Form2 extends JFrame { 

     public Form2(){ 
      JButton show = new JButton("show Form"); 
      show.addActionListener(new ActionListener() { 

       @Override 
       public void actionPerformed(ActionEvent arg0) { 
        new Form(); 
        Form2.this.setVisible(false); 
       } 

      }); 
      setTitle("Form 2"); 
      getContentPane().add(show,BorderLayout.CENTER); 
      setLocationRelativeTo(null); 
      pack(); 
      setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
      setVisible(true); 
     } 
    } 


    public static void main(String[] args) { 
     new Form(); 
    } 
} 

Я надеюсь, что это помогает.

По вашему запросу Form является формой для учетных данных и Form2 является CinemaUI.

+0

Я попытался использовать то, что вы написали, но я все еще получаю ту же ошибку, что и раньше. Я добавил Output, надеюсь, вы знаете, что это значит. Еще раз спасибо! – Villager

+0

Что находится в 30 строках в 'CinemaUI'? – alex2410

+0

где ваш 'initComponents();' '' CinemaUI', я думаю, проблема в нем. – alex2410

0

Errr ... без каких-либо подробностей о реализации CinemaUI, это будет немного сложно. Предположим, что CinemaUI расширяет JFrame. Вы уверены, что сначала вызвали пакет()? Если это не кадр, вы, вероятно, уже в каком-то фрейме ... поэтому сначала вы должны добавить CinemaUI.

0

Я нашел свою проблему. Я должен был создать новый JFrame вместо нового «класса». Таким образом, он работал отлично, используя этот пример:

Form1 form = new Form1(); 
form.setVisibile(true); 
this.setVisibile(false); 
Смежные вопросы