2016-03-24 4 views
0

Я попытался сделать приложение, чтобы оно открыло меню с кнопками [вставить поиск, например]. Если нажать кнопку, для каждой кнопки будет открыт другой iframe. Но когда дело доходит до щелчка во второй раз, вставка кнопки iframe была разбита. Даже если после вставки я нажимаю поиск, iframe снова разбился.Не удается открыть дважды iframe

Основная рама:

public Exercise(){ 
     frame1= new JFrame(); 
     frame1.setSize(400, 100); 

     panel1 = new JPanel(); 
     panel1.setVisible(true); 

     in= new JButton("insert"); 
     in.setSize(50, 10); 
     in.setLocation(100, 100); 
     panel1.add(in); 

     s = new JButton("search"); 
     s.setSize(50, 10); 
     s.setLocation(200, 200); 
     panel1.add(s); 
     s.setVisible(true); 

     frame1.add(panel1); 
     frame1.setVisible(true); 
     in.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent ae) { 
        insert(); 
     }); 
     s.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent ae) { 
        search() 
     }); 

     frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    } 

Поиск функции:

public void search(){ 
frame3= new JFrame(); 
frame3.setSize(300, 300); 
panel3 = new JPanel(); 
panel3.setLayout(null); 
    /* and other textfields and labels */ 
JButton go= new JButton("go");      
go.setSize(100, 100); 
go.setBounds(10, 200,200,20); 
panel3.add(go); 

frame3.add(panel3); 
frame3.setVisible(true); 
go.addActionListener(new ActionListener() { 

@Override 
public void actionPerformed(ActionEvent ae) { 
    ////// .... //// 
    frame3.setVisible(false) 
    /* I have already tried: 
    frame3.dispose(). 
    frame3.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);*/ 
}); 
} 

Вставка функции

public void insert(){ 
frame2= new JFrame(); 
frame2.setSize(300, 300); 
panel2 = new JPanel(); 
panel2.setLayout(null); 
/* and other labels and textfields */ 

JButton save= new JButton("save");      
save.setSize(100, 100); 
save.setBounds(10, 200,200,20); 
panel2.add(save); 

frame2.add(panel2); 
frame2.setVisible(true); 
save.addActionListener(new ActionListener() { 

@Override 
public void actionPerformed(ActionEvent ae) { 
    ////// .... //// 
    frame2.setVisible(false) 

}); 
} 

Что я могу сделать?

Спасибо заранее

ответ

0

Это не очень хорошая практика, чтобы создать новый фрейм каждый раз при нажатии кнопки: вы делаете это с поиском() и вставить(). Таким образом, bset, который вы можете сделать, это сохранить один кадр для кадра 2, один для кадра 3 и т. Д. И сделать их видимыми/невидимыми по мере необходимости.

Это создает рамки вне функций search() insert() - возможно, в конструкторе.

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