Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建java jtable的鼠标双侦听器_Java_Swing_Netbeans_Jtable_Mouse Listeners - Fatal编程技术网

如何创建java jtable的鼠标双侦听器

如何创建java jtable的鼠标双侦听器,java,swing,netbeans,jtable,mouse-listeners,Java,Swing,Netbeans,Jtable,Mouse Listeners,我有java jtable,我想在它上面使用鼠标双击事件,我有很多代码可以将listener粘贴到表中,无法将其粘贴到我的代码中,并且厌倦了到处阅读数十个listener代码,我是Java新手,需要更耐心、更简单的直接帮助,而且需要一些专业人员stack不要给出或负担得起这样的基本问题,我感觉到了同样的情况,因为过去多次尝试向我解释一些模糊的代码,我只提供帮助?!希望这次我会很幸运! 最后,堆栈中所有可用的侦听器代码都使用设计器提供的表,而不使用由代码创建的我的表。我不知道为什么这可能是我的主要

我有java jtable,我想在它上面使用鼠标双击事件,我有很多代码可以将listener粘贴到表中,无法将其粘贴到我的代码中,并且厌倦了到处阅读数十个listener代码,我是Java新手,需要更耐心、更简单的直接帮助,而且需要一些专业人员stack不要给出或负担得起这样的基本问题,我感觉到了同样的情况,因为过去多次尝试向我解释一些模糊的代码,我只提供帮助?!希望这次我会很幸运! 最后,堆栈中所有可用的侦听器代码都使用设计器提供的表,而不使用由代码创建的我的表。我不知道为什么这可能是我的主要问题

  public  class JFband  extends javax.swing.JFrame  {
    Connection con1;
    Statement stmt1;
    ResultSet rs1;
    Connection con;
    Statement stmt;
    ResultSet rs;
    String fLag;
    DefaultTableModel tableModel;
    static String Bno;

            JTable  jTnameSearch = new JTable(tableModel);
     private TableRowSorter<TableModel> rowSorter
            = new TableRowSorter<>();


    // declare sorter to sort JTable data based on jTsearch Box field entry 


    public JFband() {

      this.setLayout(null);
     // here is the code with error :

      jTnameSearch.addMouseListener(new MouseAdapter(){ 
     @Override
     public void mouseClicked(MouseEvent e){
      if (e.getClickCount() == 2){
      JOptionPane.showMessageDialog(null, "the double click code is working");

        }
      }
     } );

      }

       }

     // listener for my jTable 

     @SuppressWarnings("unchecked")
     // <editor-fold defaultstate="collapsed"   desc="Generated                            Code">                          



    public  void LoadTable(){
                try {
            String host1= "jdbc:derby://localhost:1527/accountingsystem";
            String uName1="adamin";
            String uPass1="1234a1234b";
            String sql1;
            con1=DriverManager.getConnection(host1,uName1 ,uPass1);
            //String sql ="select * from log where password= jTuser.getText()  " ;
         if (fLag.equals("search"))
            sql1="select  band_name,band_no ,band_type from band order by band_no ";
           else
            sql1="select  band_name,band_no ,band_type from band where band_name='" +filterText.getText()+ "' order by band_no ";
            stmt1=con1.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
            rs=stmt1.executeQuery(sql1);
            int jCounter=0; 
            while (rs.next()){ jCounter++;
            }
  if (jCounter==0) 
     return;
         rs.beforeFirst();
                String[]   columnnames = {"اسم الحساب","رقم الحساب","نوع الحساب"};
               String Data[][]=new String[jCounter][3];
                  int j=0;
           while (rs.next()) {
        //    JOptionPane.showMessageDialog(null,  i+"فاصل   "+ jCounter);
               Data[j][0]=rs.getString("band_name"); 
           Data[j][1]=  rs.getString("band_no");
     Data[j][2]=  rs.getString("band_type");
              ++j;
                        }    
                    //   DefaultTableModel tableModel;
            tableModel = new DefaultTableModel(Data,columnnames);
           jTnameSearch = new JTable(tableModel) {   // القوس هذا جديد اضيف لعمل شرط عدم امكانية الكتابة 
               // في الجدول اصبح خمسة سطر 
            public boolean isCellEditable(int row, int col)  
            {  
         return false;  
            }  
        };
        //  انتهت دالة منع الكتابة 
           //only single selection mode
           jTnameSearch.setSelectionMode(0);
          rowSorter  = new TableRowSorter<>(jTnameSearch.getModel());
               jTnameSearch.setRowSorter(rowSorter);
                        jSpane3.setViewportView(jTnameSearch);
            jTnameSearch.setFillsViewportHeight(true);
            //jTnameSearch.setAutoCreateRowSorter(true); // enable sort and filter
              jPsearch.setVisible(true);
            jPanel2.setVisible(false);
            filterText.requestFocus();
            rs.close();
            fLag="text";
                 }

        catch (SQLException ex) {
            System.out.println(ex);
    }
    }

   }
公共类jfb并扩展javax.swing.JFrame{
连接con1;
报表stmt1;
结果集rs1;
连接con;
报表stmt;
结果集rs;
字符串标志;
DefaultTableModel表格模型;
静态字符串Bno;
JTable jTnameSearch=新的JTable(tableModel);
专用表行分拣机行分拣机
=新表格行分拣机();
//声明分类器,根据jTsearch Box字段输入对JTable数据进行排序
公共JFband(){
此.setLayout(null);
//以下是错误代码:
jTnameSearch.addMouseListener(新的MouseAdapter(){
@凌驾
公共无效mouseClicked(MouseEvent e){
如果(如getClickCount()==2){
showMessageDialog(null,“双击代码正在工作”);
}
}
} );
}
}
//我的jTable的侦听器
@抑制警告(“未选中”)
//                           
公共void加载表(){
试一试{
String host1=“jdbc:derby://localhost:1527/accountingsystem";
字符串uName1=“adamin”;
字符串uPass1=“1234a1234b”;
字符串sql1;
con1=DriverManager.getConnection(主机1、uName1、uPass1);
//String sql=“从日志中选择*,其中password=jTuser.getText()”;
if(标志等于(“搜索”))
sql1=“按波段编号从波段顺序中选择波段名称、波段编号、波段类型”;
其他的
sql1=“从band_name='“+filterText.getText()+”“按band_编号排序”中选择band_名称、band_编号、band_类型”;
stmt1=con1.createStatement(ResultSet.TYPE\u SCROLL\u敏感,ResultSet.CONCUR\u可更新);
rs=stmt1.executeQuery(sql1);
int jCounter=0;
而(rs.next()){jCounter++;
}
如果(jCounter==0)
返回;
rs.beforeFirst();
字符串[]列名={“列名”、“列名”、“列名”;
字符串数据[][]=新字符串[jCounter][3];
int j=0;
while(rs.next()){
//showMessageDialog(null,i+i+“فال”+jCounter);
数据[j][0]=rs.getString(“band_name”);
数据[j][1]=rs.getString(“带号”);
数据[j][2]=rs.getString(“band_类型”);
++j;
}    
//DefaultTableModel表格模型;
tableModel=新的DefaultTableModel(数据、列名称);
jTnameSearch=新JTable(表格模型)
// في الجدول اصبح خمسة سطر 
公共布尔值可编辑(int行,int列)
{  
返回false;
}  
};
//  انتهت دالة منع الكتابة 
//只有单一选择模式
jTnameSearch.setSelectionMode(0);
rowSorter=新表rowSorter(jTnameSearch.getModel());
jTnameSearch.setRowSorter(rowSorter);
jSpane3.setViewportView(jTnameSearch);
jTnameSearch.setfillsviewpertheight(true);
//jTnameSearch.setAutoCreateRowSorter(true);//启用排序和筛选
jPsearch.setVisible(true);
jPanel2.setVisible(false);
filterText.requestFocus();
rs.close();
fLag=“text”;
}
catch(SQLException-ex){
系统输出打印项次(ex);
}
}
}

我制作了一个连接到jtable的click事件:

    int ClickCount=0,selectedTodelete=-1;

    private void JTArticleJPAddArrticleMouseClicked(java.awt.event.MouseEvent evt) {                                                    

    if (ClickCount==1) {
        // your double click section code here
                 return;
    }else{
            if (selectedTodelete==JTArticleJPAddArrticle.getSelectedRow()) {
                ClickCount++;
              //here we are checking that the event is on the same row (double click on the same row)
        }else{

                ClickCount=0;
                selectedTodelete=JTArticleJPAddArrticle.getSelectedRow();
                // the new cell selected
        }

    }

    //one click event code here
}                                                   
这是我在任何地方制作双击事件的方法,对我来说非常有效

表实例化代码可以帮助您理解为什么不适合您

JTArticleJPAddArrticle = new javax.swing.JTable();

JTArticleJPAddArrticle.setBackground(new java.awt.Color(204, 204, 255));

JTArticleJPAddArrticle.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {

},
new String [] {
    "Reference","Libellé","Marque","Type","Prix d'achat","Prix de vente","Quantité","Total","Etat"
   }
){
boolean[] canEdit = new boolean [] {
    false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
    return false;
    }
 });



 JTArticleJPAddArrticle.addMouseListener(new java.awt.event.MouseAdapter() {
   public void mouseClicked(java.awt.event.MouseEvent evt) {
        JTArticleJPAddArrticleMouseClicked(evt);// that a function called in the event mouseClicked
   }
 });

      jScrollPane8.setViewportView(JTArticleJPAddArrticle);

请考虑添加A,而不是将所有代码转储到这里。一些提示:1)不要将空布局与布局管理器混合使用。就用最后一个吧。2) 使用合适的监听器代替KeyListener。通常,ActionListener可以捕捉文本字段上按下的“Enter”键或组合框中的选择更改,DocumentListener可以侦听文本组件中的文本更改。3) 将数据库连接代码与GUI分开。在多层设计中,这些行属于不同的层。您好,我已经遇到了您的问题。您需要做的是首先检查所选行是否与上一次单击中的行相同。我这样做是为了删除数据。我将给您我的代码,尝试以您的方式使其有用。@dic19谢谢您的建议我已经阅读并尝试减少我的代码因此,我检查了鼠标侦听器到从设计人员导入的jtable,它的工作情况是从设计表开始的,在我的情况下不工作,当jtable由代码创建时有什么帮助吗?为什么代码不影响代码jtable并在设计表中工作?谢谢,但JTArticleJPAddArrticle是什么?它是您的jtbale名称吗?deleteCount integer Variable的好处是什么?代码正在使用swing design jtable,但不适用于由代码创建的我的jtable任何帮助我检查了从desinger它的工作情况表从设计和不工作在我的情况下,当jtable创建的代码有任何帮助?wh