重复的jframe出现在netbeans中

时间:2015-07-01 08:30:52

标签: java swing netbeans jtable jframe

我将数据从frame1中的jtable传输到frame2中的另一个jtable。 问题是,每当我从第一个表中选择一行并按下按钮(将其传送到另一个表格)时,会弹出另一个帧,并在第一行中输入数据。我希望所有选定的数据都在同一个表中。

我知道我的代码中写错了但我不知道正确的解决方案!这是我的代码

 private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    int row = jTable2.getSelectedRow();        
    String a1=jTable2.getModel().getValueAt(row, 1).toString();
    String a2=jTable2.getModel().getValueAt(row, 4).toString();
    String a3=jTable2.getModel().getValueAt(row, 21).toString();
    String a4=jTable2.getModel().getValueAt(row, 5).toString();
    String a5=jTable2.getModel().getValueAt(row, 22).toString();
     NewJFrame2 fr2 = new NewJFrame2();
     fr2.gencode(a1, a2, a3, a4, a5);
        //this.dispose();
        fr2.setVisible(true);
}

这是另一个框架

public NewJFrame2() {
    initComponents();
}
        int i=0;
        public void gencode(String a1, String a2, String a3, String a4, String a5){
            System.out.print(i);
            i++;
        jTable1.setValueAt(a1, i, 0);
        jTable1.setValueAt(a2, i, 1);
        jTable1.setValueAt(a3, i, 2);
        jTable1.setValueAt(a4, i, 3);
        jTable1.setValueAt(a5, i, 4);

   }

2 个答案:

答案 0 :(得分:1)

问题是你是在按钮点击事件中创建新框架

 NewJFrame2 fr2 = new NewJFrame2(); //here is the problem

在你的框架中声明一个实例变量frame2

class One{
  NewJFrame2 fr2;
}

并在需要时初始化它,但只有一次 并在动作方法中使用

  if(fr2==null){
      fr2=new  NewJFrame2(); //initialize if it's null
  }
  fr2.gencode(a1, a2, a3, a4, a5);

答案 1 :(得分:1)

NewJFrame2 fr2=null; //class level variable
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        int row = jTable2.getSelectedRow();        
        String a1=jTable2.getModel().getValueAt(row, 1).toString();
        String a2=jTable2.getModel().getValueAt(row, 4).toString();
        String a3=jTable2.getModel().getValueAt(row, 21).toString();
        String a4=jTable2.getModel().getValueAt(row, 5).toString();
        String a5=jTable2.getModel().getValueAt(row, 22).toString();
        //create instance when not initiated
        if(fr1==null){
            fr2 = new NewJFrame2();
        }
         fr2.gencode(a1, a2, a3, a4, a5);
            //this.dispose();
            fr2.setVisible(true);
    }

将fr2设为类级别变量,并在未启动时创建实例