2016-08-26 14 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)メソッドを呼び出していることを確認してくださいためのコードです。

もう1つの問題は、mousePressedをマウスのプレスで反応させている可能性がありますので、代わりにmouseClickedを使用することをお勧めします。

+0

フロリアンが言ったように、それは動作します、ありがとう –