2015-02-16 4 views
0

Я написал этот код Java, чтобы обнаружить двойной щелчок левой кнопки мыши, но этот код не работает, пожалуйста, помогите.мышь двойной клик не работает

import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 

public class B extends MouseAdapter { 

    JFrame frame = new JFrame(); 
    Object rows[][] = new Object[5][3]; 
    String colums[] = {"A","B","C"}; 
    JTable table = new JTable(rows,colums); 
    JScrollPane scroll = new JScrollPane(table); 

    public static void main(String arg[]) { 
     new B(); 
    } 

    B() { 
     frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
     table.addMouseListener(this); 
     frame.add(scroll); 
     frame.setVisible(true); 
    } 

    public void mouseClicked(MouseEvent clicked) { 
     if(clicked.getSource()==table && clicked.getButton()==1 && clicked.getClickCount()==2) 
      System.out.println("Left Double Click"); 
    } 
} 
+0

Как именно он не работает? –

+0

Я полагаю, что «Left Double Click» не отображается –

+0

Вы, например, не будете компилировать – MadProgrammer

ответ

0
  1. Ваш пример не скомпилируется
  2. Вы должны использовать SwingUtilities.isLeftMouseButton(clicked) вместо clicked.getButton()==1
  3. Таблица может быть потребляя MouseEvent и установка редактора клеток, прежде чем ваш MouseListener уведомляется.
  4. Если вы используете table.setFillsViewportHeight(true); вы можете дважды щелкнуть за пределами строк/столбцов успешно

Вы можете изменить таблицу в CellEditor с, чтобы игнорировать MouseEvent (или изменить количество кликов, необходимых), это позволит вам MouseListener чтобы забрать двойные щелчки, но и увеличить рабочую нагрузку, так как вам нужно будет поставить CellEditor для каждого столбца Class типа

TableCellEditor editor = new DefaultCellEditor(new JTextField(10)) { 

     @Override 
     public boolean isCellEditable(EventObject anEvent) { 
      boolean editable = false; 
      if (!(anEvent instanceof MouseEvent)) { 
       editable = super.isCellEditable(anEvent); 
      } 
      return editable; 
     } 

    }; 

    table.setDefaultEditor(Object.class, editor); 

Без больше контекста, трудно KNO w что еще предложить

Смежные вопросы