0

我刚刚在标题中说了我的问题...程序只是不要进入我将侦听器添加到表的那部分...我需要在第一列(第 0 列)的选定行中获取单元格的值。我的错误在哪里?

rezultatiTable = new JTable(data, columnNames) {


        public Class getColumnClass(int column)  {

            for (int row = 0; row < getRowCount(); row++) {
                Object o = getValueAt(row, column);
                if (o != null) {
                    return o.getClass();
                }
            }
            return Object.class;
        }
    };

   System.out.println("Before Listener");

   rezultatiTable.addMouseListener(new MouseAdapter(){

           private void MouseClicked(final MouseEvent e) {
               System.out.println("IN listener");
                if (e.getClickCount() != 0)
                {
                  final JTable target = (JTable)e.getSource();
                  final int row = target.getSelectedRow();
                  final int column = 0;

                  final int value = (Integer) target.getValueAt(row, column);
            }
            }

    });
    System.out.println("OUT of listener");

我得到输出:在侦听器的侦听器输出之前

4

1 回答 1

-2

Aunque sea demasiado tarde, puede ayudar a futuros lectores。

MouseAdapter es una clase abstracta y no se puede implementar un object de una clase abstracta。Debes crear una clase interna que herede de MouseAdapter, sobreescribir los métodos que necesites y enviar una implementation de esta clase interna a .addMouseListener。

虽然为时已晚,但这可能对未来的读者有所帮助。MouseAdapter 是一个抽象类,不能实现抽象类的对象。您必须创建一个从 MouseAdapter 扩展的内部类,覆盖您需要的方法并将此内部类的实现发送到 .addMouseListener。

例如:

//Code...

mycomponent.addMouseListener(new innerClass());


class innerClass extends MouseAdapter{

   @Override
   public void MouseClicked(MouseEvent e){
      //Your Code
   }

}
于 2014-10-01T18:40:39.333 回答