2015-01-16 3 views
1

У меня есть две форм в JFrame форме скажут формы А и БСкрыть форму шоу формы B, а затем скрыть форму B показать форму А Java JFrame

У меня есть кнопки в форме А, чтобы показать форму B и скрыть форму А.

Я хочу кнопку, чтобы тоже в форме B, чтобы показать назад предыдущую форму а (не создавать новый экземпляр) и утилизовать формы B.

Любой ключ это сделать? Благодарю.

Мой код в это время:

private void buttonAActionPerformed(java.awt.event.ActionEvent evt) { 
    FormB formB = new FormB(); 
    formB.setVisible(true); 
    this.setVisible(false); 
} 

private void buttonBActionPerformed(java.awt.event.ActionEvent evt) { 
    FormA formA = new FormA(); 
    formA.setVisible(true); 
    this.dispose(); 
} 

EDIT:

Найдено решение, сделать форму А к статическому электричеству и глобальные так можно назвать в Форме B. благодаря

+0

Измените область 'formA', чтобы слушатель кнопки в форме B мог получить доступ к' formA'. –

+0

Ничего себе это просто. Спасибо, мой плохой, я слишком много кода Android теперь запутался в Swing –

+1

См. [Использование нескольких JFrames, хорошая/плохая практика?] (Http://stackoverflow.com/q/9554636/418556) Либо «CardLayout» 'для содержимого обоих фреймов, или один из фреймов в качестве (возможно) модального диалога будет лучше всего здесь. –

ответ

0

Вам нужно создать публичный статический синхронизированный метод для возврата формы и ее создания, если это null.

FormA.java

/** 
* 
* @author joepa37 
*/ 
public class FormA extends javax.swing.JFrame { 

    private static FormA f = null; 

    public FormA() { 
     initComponents(); 
    } 

    public static synchronized FormA getInstance(){ 
     try { 
      if (f == null) { 
       f = (FormA) Class.forName("FormA").newInstance(); 
      } 
     } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { 
      System.out.println(e.toString()); 
     } 
     return f; 
    } 

    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     titleLbl = new javax.swing.JLabel(); 
     goToBtn = new javax.swing.JButton(); 
     dataTxt = new javax.swing.JTextField(); 
     dataLbl = new javax.swing.JLabel(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     titleLbl.setFont(new java.awt.Font("Calibri", 1, 14)); // NOI18N 
     titleLbl.setText("FORM A"); 

     goToBtn.setText("Go to FORM B"); 
     goToBtn.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       goToBtnActionPerformed(evt); 
      } 
     }); 

     dataLbl.setText("Data:"); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(21, 21, 21) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(dataLbl) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(dataTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE)) 
        .addComponent(goToBtn) 
        .addComponent(titleLbl, javax.swing.GroupLayout.PREFERRED_SIZE, 198, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addContainerGap(94, Short.MAX_VALUE)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(titleLbl, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addComponent(goToBtn) 
       .addGap(18, 18, 18) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(dataTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(dataLbl)) 
       .addContainerGap(122, Short.MAX_VALUE)) 
     ); 

     pack(); 
    }// </editor-fold>       

    private void goToBtnActionPerformed(java.awt.event.ActionEvent evt) {           
     FormB.getInstance().setVisible(true); 
     this.dispose(); 
    }          

    public static void main(String args[]) { 
     /* Create and display the form */ 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       FormA.getInstance().setVisible(true); 
      } 
     }); 
    } 

    // Variables declaration - do not modify      
    private javax.swing.JLabel dataLbl; 
    private javax.swing.JTextField dataTxt; 
    private javax.swing.JButton goToBtn; 
    private javax.swing.JLabel titleLbl; 
    // End of variables declaration     
} 

FormB.java

/** 
* 
* @author joepa37 
*/ 
public class FormB extends javax.swing.JFrame { 
    private static FormB f = null; 

    public FormB() { 
     initComponents(); 
    } 

    public static synchronized FormB getInstance(){ 
     try { 
      if (f == null) { 
       f = (FormB) Class.forName("FormB").newInstance(); 
      } 
     } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { 
      System.out.println(e.toString()); 
     } 
     return f; 
    } 

    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     titleLbl = new javax.swing.JLabel(); 
     goToBtn = new javax.swing.JButton(); 
     dataTxt = new javax.swing.JTextField(); 
     dataLbl = new javax.swing.JLabel(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     titleLbl.setFont(new java.awt.Font("Calibri", 1, 14)); // NOI18N 
     titleLbl.setText("FORM B"); 

     goToBtn.setText("Go to FORM A"); 
     goToBtn.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       goToBtnActionPerformed(evt); 
      } 
     }); 

     dataLbl.setText("Data:"); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(21, 21, 21) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(dataLbl) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(dataTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE)) 
        .addComponent(goToBtn) 
        .addComponent(titleLbl, javax.swing.GroupLayout.PREFERRED_SIZE, 198, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addContainerGap(94, Short.MAX_VALUE)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(titleLbl, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addComponent(goToBtn) 
       .addGap(18, 18, 18) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(dataTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(dataLbl)) 
       .addContainerGap(122, Short.MAX_VALUE)) 
     ); 

     pack(); 
    }// </editor-fold>       

    private void goToBtnActionPerformed(java.awt.event.ActionEvent evt) {           
     FormA.getInstance().setVisible(true); 
     this.dispose(); 
    }          

    // Variables declaration - do not modify      
    private javax.swing.JLabel dataLbl; 
    private javax.swing.JTextField dataTxt; 
    private javax.swing.JButton goToBtn; 
    private javax.swing.JLabel titleLbl; 
    // End of variables declaration     
} 

Не забудьте изменитьf = (FormB) Class.forName("FormA").newInstance(); Class.forName("FormA") и Class.forName("FormB") Помните, что строка параметра должен быть путь каждого файла.

Смежные вопросы