【问题标题】:Cant open twice an iframe无法打开两次 iframe
【发布时间】:2016-03-24 22:01:27
【问题描述】:

我试图制作一个应用程序,它将打开一个带有按钮的菜单[例如插入搜索]。单击按钮时,将为每个按钮打开另一个 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)

});
}

我能做什么?

提前谢谢你

【问题讨论】:

    标签: java iframe jpanel panel actionlistener


    【解决方案1】:

    每次按下按钮时都创建一个新框架不是一个好习惯:您可以使用 search() 和 insert() 来执行此操作。所以你可以做的 bset 是为第 2 帧保留一帧,为第 3 帧保留一帧等,并根据需要使它们可见/不可见。

    即在函数 search() insert() 之外创建框架 - 可能在构造函数中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-06
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      相关资源
      最近更新 更多