2016-03-24 4 views
0

ボタンを使ってメニューを開くようにしようとしました[検索を挿入]。ボタンをクリックすると、ボタンごとに別のiframeが開きます。しかし、ボタンを2回目にクリックすると、iframeがクラッシュしました。 挿入後、検索をクリックしても、iframeが再びクラッシュしました。キャンバスがiframeを2回開いている

メインフレーム:

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のために1つのフレーム、フレーム3のための1つのフレームなどを保持し、それらを必要に応じて表示/非表示にします。

これは、関数search()の外側のフレームを作成します(おそらくコンストラクタ内にあります)。

関連する問題