2016-08-26 2 views
0

테이블 클릭으로 실행되는 이벤트가 생성되어 Joptionpane이 열립니다. 하지만 문제는 joptionpane이 2 번 나타납니다. 이 클릭 (table0)처럼 테이블 을 생성 한 후에 이벤트를 추가한다는 것을 명심하십시오. 테이블은 DB 및 일부 계산에서 검색 한 후에 생성됩니다.jtable 마우스 이벤트 팝업 2 번

그녀는

protected void click(JTable table) 
{ 
    JScrollPane pane=new JScrollPane(); 



    table.addMouseListener(new MouseAdapter() { 

     @Override 
     public void mousePressed(MouseEvent e) { 


      if(!combo_chau.getSelectedItem().toString().equals("station")) 
       pane.setViewportView(tab_mat(table.getValueAt(table.getSelectedRow(), 2).toString(),table.getValueAt(table.getSelectedRow(), 3).toString())); 
       if(combo_chau.getSelectedItem().toString().equals("station")) 
       {pane.setViewportView(tab_sta(table.getValueAt(table.getSelectedRow(), 5).toString(),table.getValueAt(table.getSelectedRow(), 0).toString())); 
       if(comboBox_1.getSelectedItem().equals("sans detail")) 
       { pane.setViewportView(tab_sta_sansdetail(combo_cam.getSelectedItem().toString())); 
        if(combo_cam.getSelectedItem().toString().equals("tout")) 
         pane.setViewportView(tab_sta(table.getValueAt(table.getSelectedRow(), 5).toString(),table.getValueAt(table.getSelectedRow(), 0).toString())); 
       } 
       } 

      if(table.getModel().getColumnName(((JTable) e.getSource()).getSelectedColumn()).equals("autre")) 
      {  int result = JOptionPane.showConfirmDialog(
        frame, 
        pane, 
        "Use a Panel", 
        JOptionPane.OK_CANCEL_OPTION, 
        JOptionPane.PLAIN_MESSAGE); 
      } 
     } 

    }); 
} 

답변

1

은 새 리스너에게 당신이 그것을 호출 할 때마다 추가하기 때문에 각 테이블에 한 번만 protected void click(JTable table) 메소드를 호출하고 있는지 확인 이벤트에 대한 코드입니다.

또 다른 문제점은 mousePressed이 이미 마우스 프레스에서 반응한다는 것입니다. 대신 전체 클릭에서만 반응하기 위해 mouseClicked을 사용하는 것이 좋습니다.

+0

Florian이 말했듯이 작동하고 고맙습니다. –