Java 在netbeans中,此代码中的适当事件是什么?

Java 在netbeans中,此代码中的适当事件是什么?,java,swing,Java,Swing,我有一个内部框架,但每次激活任何内部框架时,组合框中的值都会在下拉列表中重复,如何防止这种情况发生 事实上,我的问题是当任何其他内部框架被激活时,组合框开始复制 private void formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con=

我有一个内部框架,但每次激活任何内部框架时,组合框中的值都会在下拉列表中重复,如何防止这种情况发生

事实上,我的问题是当任何其他内部框架被激活时,组合框开始复制

private void formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) {   

try
  {
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     Connection con= DriverManager.getConnection("jdbc:odbc:ref","sa","niit@123");
     Statement st1=con.createStatement();
     ResultSet rs1=st1.executeQuery("select opid from patient");
     while(rs1.next())
     {
        opid_combo.addItem(rs1.getString(1));
     }}

     catch(Exception e)
     {
        System.out.println(e);
     }

您应该在重新加载组合框值之前清除它们

private void formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
    // Remove items first
    opid_combo.removeAllItems()
    try
    {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con= DriverManager.getConnection("jdbc:odbc:ref","sa","niit@123");
        Statement st1=con.createStatement();
        ResultSet rs1=st1.executeQuery("select opid from patient");
        while(rs1.next())
        {
            opid_combo.addItem(rs1.getString(1));
        }
    }
    catch(Exception e)
    {
        System.out.println(e);
    }
}
吹毛求疵

当我在这里的时候。每次激活帧时重新加载项目可能不是一个好主意。如果您需要在某个时间重新加载组合框,您可能应该提供一个“刷新”选项


另外,在事件调度线程的上下文中这样做也不是一个好主意,因为它会使应用程序在每次切换帧时“暂停”。相反,使用类似a的方法在后台加载值

在重新加载之前,您应该清除组合框值

private void formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
    // Remove items first
    opid_combo.removeAllItems()
    try
    {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con= DriverManager.getConnection("jdbc:odbc:ref","sa","niit@123");
        Statement st1=con.createStatement();
        ResultSet rs1=st1.executeQuery("select opid from patient");
        while(rs1.next())
        {
            opid_combo.addItem(rs1.getString(1));
        }
    }
    catch(Exception e)
    {
        System.out.println(e);
    }
}
吹毛求疵

当我在这里的时候。每次激活帧时重新加载项目可能不是一个好主意。如果您需要在某个时间重新加载组合框,您可能应该提供一个“刷新”选项

另外,在事件调度线程的上下文中这样做也不是一个好主意,因为它会使应用程序在每次切换帧时“暂停”。相反,使用类似于的方法在后台加载值

我的问题是当任何其他内部框架被激活时,组合框开始复制

private void formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) {   

try
  {
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     Connection con= DriverManager.getConnection("jdbc:odbc:ref","sa","niit@123");
     Statement st1=con.createStatement();
     ResultSet rs1=st1.executeQuery("select opid from patient");
     while(rs1.next())
     {
        opid_combo.addItem(rs1.getString(1));
     }}

     catch(Exception e)
     {
        System.out.println(e);
     }
不要在
internalFrameActivated
事件中加载数据。而是使用
internalFrameOpened
事件,并且只能在第一次执行

我的问题是当任何其他内部框架被激活时,组合框开始复制

private void formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) {   

try
  {
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     Connection con= DriverManager.getConnection("jdbc:odbc:ref","sa","niit@123");
     Statement st1=con.createStatement();
     ResultSet rs1=st1.executeQuery("select opid from patient");
     while(rs1.next())
     {
        opid_combo.addItem(rs1.getString(1));
     }}

     catch(Exception e)
     {
        System.out.println(e);
     }

不要在
internalFrameActivated
事件中加载数据。请改为使用
internalFrameOpened
事件,并且只能在第一次执行此操作。

尝试在向组合框添加字符串之前清除组合框。此外,什么方法包含上述代码?尝试在向组合框添加字符串之前清除组合框。另外,什么方法包含上述代码?