[Java] Mousewheel langzaam.

Pagina: 1
Acties:

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Zoals de topic al zegt, onder jdk1.4 (beta 1 2 en 3) kun je gebruik maken van de mouse wheel. Maar deze is te langzaam (je blijft maar aan het wieltje draaien). Ik heb op de sunsite zitten zoeken maar daar geen oplossing gevonden. Weet iemand er misschien een opl. voor?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Hum, er is wel een MouseWheelListener, dus je zou het handmatig kunnen afvangen, maar ik neem aan dat dat niet de bedoeling is. Ik denk dat de scroll-snelheid wel ergens aangepast kan worden (misschien zelfs look-and-feel afhankelijk?). Maar heb er nog nooit mee gewerkt. Ik zal eens rondkijken.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Hum lastig... Ik heb even gekeken, de mate van scrollen wordt bepaald door het event. In BasicScrollPaneUI vond ik dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    protected class MouseWheelHandler implements MouseWheelListener {
      /**
       * Called when the mouse wheel is rotated while over a
       * JScrollPane.
       *
       * @param e     MouseWheelEvent to be handled
       * @since 1.4
       */
      public void mouseWheelMoved(MouseWheelEvent e) {
        if (scrollpane.isWheelScrollingEnabled() &&
            e.getScrollAmount() != 0) {
            JScrollBar toScroll = scrollpane.getVerticalScrollBar();
            int direction = 0;
            // find which scrollbar to scroll, or return if none
            if (toScroll == null || !toScroll.isVisible()) { 
              toScroll = scrollpane.getHorizontalScrollBar();
              if (toScroll == null || !toScroll.isVisible()) { 
                return;
              }
            }
            direction = e.getWheelRotation() < 0 ? -1 : 1;
            if (e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL) {
              BasicScrollBarUI.scrollByUnits(toScroll, direction,
                                       e.getScrollAmount());
            }
            else if (e.getScrollType() ==
                 MouseWheelEvent.WHEEL_BLOCK_SCROLL) {
              BasicScrollBarUI.scrollByBlock(toScroll, direction);
            }
        }
      }
    }

Het is dus even de vraag hoe je de omvang van de scroll-hoeveelheid kunt beinvloeden... Uiteraard kan je het nog steeds zelf implementeren, maar dat is wellicht niezo handig.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Hum nee, ik denk niet dat dit standaard aangeboden wordt. De standaard platform instelling zal wel genomen worden.

Je kunt misschien processMouseWheelEvent uit java.awt.Component overriden en de ScrollAmount ophogen. Zo hoef je niet zelf met MouseWheelListeners aan de slag.

Resultaat van een beetje grep: niet veel ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Als je een MouseWheelListener implement kun je de ook nog het volgende doen:
code:
1
2
3
4
void mouseWheelMoved(MyMouseWheelEvent e)
{
  blabla;
}

en in clas MyMouseWheelEvent extends MouseWheelEvent
code:
1
2
3
4
5
6
7
8
9
10
11
12
public void SetMouseWheelSpeed(int a_Speed)
{
  m_MouseWheelSpeed = a_Speed;
}

public int getScrollAmount() 
{
   int l_Amount = super();
   return (l_Amount*m_MouseWheelSpeed);
}

of whatevern,

ofzo, zou kunnen werken :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
fladder: en in clas MyMouseWheelEvent extends MouseWheelEvent
Punt is dat je geen controle hebt op de generatie van het event. Je extensie kan dus niet zomaar gebruikt worden helaas...

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Ik gebruik nu JEditTextArea van JEdit en Jext (en Jipe) en daar heb ik een nieuwe classe op gemaakt met een mousewheellistener en nu kan ik alles zelf instellen, zoals het hoort.
Pagina: 1