mouseListener проблема и JTable

У меня есть класс, в котором я осуществляю события frame и хочу сделать, что каждый раз, когда двойного клика на таблице этот залив другое окно и он показал мне данные об этом объекте, я осуществляю интерфейс mouseListener в класс и ее добавляет в Jtable для того, чтобы я работал событие.

Этим является класс, где я осуществляю интерфейсы и добавляю интерфейс mouseListener к таблице. Внимание: только я помещу события, что помогает mouseListener из-за того, что - события интереса в этом случае:

public class ControladorEstudiante implements ActionListener, KeyListener, MouseListener{

private DBConnection dbcon;

EstudianteAdmin estAdmin= new EstudianteAdmin();
MostrarEstudiante estMostrar= new MostrarEstudiante();
EstudianteDAOImpl estDAO= new EstudianteDAOImpl(dbcon);

public ControladorEstudiante(EstudianteAdmin estAdmin, MostrarEstudiante estMostrar, EstudianteDAOImpl estDAO){
    this.estDAO= estDAO;
    this.estAdmin= estAdmin;
    this.estMostrar= estMostrar;
    this.estAdmin.getTablaEstudiante().addMouseListener(this);    }

public void InicializarCrud(){

}

@Override
public void keyReleased(KeyEvent ke) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
public void mouseClicked(MouseEvent me) {
        if(me.getClickCount()== 2){

        int fila= estAdmin.getTablaEstudiante().getSelectedRow();

        if(fila>-1){
            estMostrar.getTxtNombre().setText(estAdmin.getTablaEstudiante().getValueAt(fila, 0).toString());
            estMostrar.getTxtMatricula().setText(estAdmin.getTablaEstudiante().getValueAt(fila, 1).toString());
            estMostrar.getTxtNota().setText(estAdmin.getTablaEstudiante().getValueAt(fila, 3).toString());
        }
    }
}

@Override
public void mousePressed(MouseEvent me) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
public void mouseReleased(MouseEvent me) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
public void mouseEntered(MouseEvent me) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
public void mouseExited(MouseEvent me) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

}

Поскольку они смогут знать метод, который у меня есть для, когда два клик на таблице - mouseClicked, однако, загрузив данные о Базе данных в таблице, немедленно я перемещаю мышь на jtable, он дает мне ошибку, далее я оставляю им stacktrace:

Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException: Not supported yet.
at comm.estudiante.dao.controlador.ControladorEstudiante.mouseEntered(ControladorEstudiante.java:425)
at java.awt.AWTEventMulticaster.mouseEntered(AWTEventMulticaster.java:300)
at java.awt.Component.processMouseEvent(Component.java:6544)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.retargetMouseEnterExit(Container.java:4676)
at java.awt.LightweightDispatcher.trackMouseEnterExit(Container.java:4654)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4505)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Другая вещь состоит в том, что, когда я осуществляю интерфейс mouseListener на Jtable, этот не выбирается, не потому что.

2
задан 10.09.2016, 05:18
2 ответа

Эта ошибка дает это тебе, из-за которого ты сами показал ему, что, когда последует "mouseEntered" за событием это исключение. Удали метод или осуществи это ;-)

@Override
public void mouseEntered(MouseEvent me) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

, Если ты обращаешь внимание, у твоего IDE было, что porner по умолчанию это осуществление.

2
ответ дан 24.11.2019, 13:27
  • 1
    Сейчас mouseClicked дает ошибку, я оставляю тебе stacktrace: Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3 >= 3 at java.util.Vector.elementAt(Vector.java:474) at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:294) at sun.swing.SwingUtilities2.convertColumnIndexToModel(SwingUtilities2.java:1988) at javax.swing.JTable.convertColumnIndexToModel(JTable.java:2582) at javax.swing.JTable.getValueAt(JTable.java:2718) at comm.estudiante.dao.controlador.ControladorEstudiante.mouseClicked(ControladorEstudiante.java:408) –  David Calderon 09.09.2016, 15:01

Один из недостатков осуществления интерфейса java.awt.event.MouseListener в новом классе дело в том, что ты должен определять все Ваши методы в ней.

Так что включился также в JDK класс java.awt.event.MouseAdapter, которую ты увеличиваешь, и sobreescribes только желанные методы.

Например, если ты заинтересован в двойном клике, следующий код мог бы давать тебе идею:

public static void main(String[] args) {
    Object[][] data = new Object[][] { { "VGA", "640x480" }, { "SVGA", "800x600" } };
    Object[] columnNames = new Object[] { "Name", "Value" };
    JTable table = new JTable(new DefaultTableModel(data, columnNames) {
        @Override
        public boolean isCellEditable(int row, int column) {
            return false;
        }
    });
    table.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent evt) {
            if (evt.getClickCount() > 1) {
                JTable table = (JTable) evt.getSource();
                int row = table.rowAtPoint(evt.getPoint());
                TableModel model = table.getModel();
                JOptionPane.showMessageDialog(table.getParent(), model.getValueAt(row, 0));
            }
        }
    });
    JScrollPane pane = new JScrollPane(table);
    JOptionPane.showMessageDialog(null, pane);

}

ejemplo

1
ответ дан 24.11.2019, 13:27