2016-03-24 15 views
0

Ich habe versucht, eine App zu machen, dass es ein Menü mit Knöpfen öffnet [Suche für Beispiel einfügen]. Wenn Sie auf eine Schaltfläche klicken, wird für jede Schaltfläche ein anderer Iframe geöffnet. Aber wenn es zum zweiten Mal klickt klicken Sie auf die Schaltfläche einfügen, Iframe wurde abgestürzt. Auch wenn ich nach dem Einfügen auf Suche klicke, wurde der iFrame erneut abgestürzt.Kann zweimal ein iframe öffnen

Der Hauptrahmen:

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); 

    } 

Die Suchfunktion:

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);*/ 
}); 
} 

Die Insert-Funktion

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) 

}); 
} 

Was kann ich tun?

Danke im Voraus

Antwort

0

Es ist keine gute Praxis einen neuen Rahmen jedes Mal, wenn eine Taste gedrückt zu erstellen ist: Sie tun, mit Suche() und insert(). Sie können also einen Frame für Frame 2, einen für Frame 3 usw. beibehalten und sie bei Bedarf sichtbar/unsichtbar machen.

Das sind die Frames außerhalb der Funktionen search() insert() - vielleicht im Konstruktor.

Verwandte Themen