Missä vika???

Dangera

Haluan lisätä jTableen tooltipin, joka näyttää taulukon toisen sarakkeen arvon (Stringiä), kun hiiri on sarakkeen päällä, Koodasin seuraavasti:

private void jTableMouseMoved(java.awt.event.MouseEvent evt) {
int mouseOnrow = jTable.rowAtPoint(jTable.getMousePosition());
int mouseOncolumn=jTable.columnAtPoint(jTable.getMousePosition());

if (mouseOncolumn==1) {

jTable.setToolTipText(jTable.getValueAt(mouseOnrow,1).toString());
}
}

Homma toimii kuten haluan, mutta silti saan errorin

Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Invalid index
at javax.swing.DefaultRowSorter.convertRowIndexToModel(DefaultRowSorter.java:497)
at javax.swing.JTable.convertRowIndexToModel(JTable.java:2620)
at javax.swing.JTable.getValueAt(JTable.java:2695)
at gui.PatientTablePanel.jTableMouseMoved(PatientTablePanel.java:115)
at gui.PatientTablePanel.access$100(PatientTablePanel.java:43)
at gui.PatientTablePanel$1.mouseMoved(PatientTablePanel.java:101)
at java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:313)
at java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:312)
at java.awt.Component.processMouseMotionEvent(Component.java:6308)
at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3273)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4251)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


Tosin, en ole sisäistänyt vielä Pointtien käyttöä, aloittelija kun ollaan. Miten errorin saa pois?

4

618

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Toteuta

      Suisittelen ylikirjoittamaan

      public String getToolTipText(MouseEvent event)

      metodin

      • Toteuta

        ja toisekseen mikä on jTable.getMousePosition() ???

        miksi et käytä evt.getPoint()

        ja kolmanneksi, käytä
        public String getToolTipText(MouseEvent event)

        eli vika tod.näk. tässä
        int mouseOnrow = jTable.rowAtPoint(jTable.getMousePosition());
        ja mouseOnrow arvo on -1


      • Dangera
        Toteuta kirjoitti:

        ja toisekseen mikä on jTable.getMousePosition() ???

        miksi et käytä evt.getPoint()

        ja kolmanneksi, käytä
        public String getToolTipText(MouseEvent event)

        eli vika tod.näk. tässä
        int mouseOnrow = jTable.rowAtPoint(jTable.getMousePosition());
        ja mouseOnrow arvo on -1

        Miten mun nyt pitää muokata tuota koodia?


      • Toteuta
        Dangera kirjoitti:

        Miten mun nyt pitää muokata tuota koodia?

        defaulttina JTable ottaa tooltipText :in renderöijän kautta ja jos siltä ei saa niin getToolTipText() metodin kautta.

        Eli sä voit asettaa renderöijän tooltipText :in vaikka prepareRenderer metodin kautta jos renderöijä on JComponent instanssia (niinku normaalisti on esim. JLabel).
        esim. http://www.exampledepot.com/egs/javax.swing.table/Tips.html

        Tai sitten tuon getToolTipText(MouseEvent event) metodin kautta
        esim. http://www.jroller.com/santhosh/entry/partially_visible_tablecells


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Näin Enter-napilla tehdään miljardi euroa - Helsingissä

      "Ei se nyt niin kovin ihmeelliseltä näytä. Tavallinen nappi, musta muovinpala, joka kököttää parikymppiä maksavan mustan
      Maailman menoa
      27
      19827
    2. Minulla ei ole ketään muita

      Enkä halua ketään muita kuin sinut.
      Ikävä
      76
      6820
    3. 4,5 promillee

      Aika rajut lukemat joku eilen puhaltanut.
      Suomussalmi
      28
      6486
    4. Perussuomalaiset kirjoittaa vain positiivisista uutisista

      Ei tarvitse palstaa paljon seurata, kun sen huomaa. Joka ainoa positiivinen uutinen Suomen taloudesta tai ylipäätään, ni
      Maailman menoa
      99
      6235
    5. Jätä minut rauhaan

      En pidä sinusta. Lopeta seuraaminen. Älä tulkitse keskustelutaitoa tai ystävällisyyttä miksikään sellaiseksi mitä ne eiv
      Ikävä
      43
      6099
    6. Ben Z: "SDP ei ole ollut 50 vuoteen näin huolissaan velasta"

      "– Olen ollut eduskunnassa noin 50 vuotta, eikä SDP ole koskaan ollut niin huolissaan velasta kuin nyt. Se on tietysti h
      Maailman menoa
      104
      5987
    7. Harmittaako sinua yhtään?

      Tuntuuko pahalta ollenkaan?
      Ikävä
      63
      5405
    8. Voiku saisi sen sun

      Rakkauden kokea. Tykkään susta niin paljon edelleen.
      Ikävä
      46
      5136
    9. Mitä luulet, miten Martina Aitolehti pärjää Erikoisjoukoissa?

      Kohujulkkis, yrittäjä ja hyvinvointivalmentaja Martina Aitolehti on mukana Erikoisjoukot-realityssä. Erikoisjoukot on
      Suomalaiset julkkikset
      60
      4460
    10. Olitpa ikävän

      Kylmä eilen. Miksi ihmeessä?
      Ikävä
      50
      4070
    Aihe