Mausrad logitech kann links und rechts klick wie in java abragen.

  • Themenstarter Themenstarter Gelöschtes Mitglied 56712
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 56712

Gast
Hallo Forum.
Ich hab wahrscheinlich eine dumme Frage.

Meine Maus kann über das Scroll-Rad nach links und nach rechts geklickt werden.

In allen anwendungen Firefox, exlipse, und alle anderen wird darauf reagiert. (Horizontaler Bildlauf nach rechts/links je nach dem)

Meine Frage:
Wie schaffe ich es, dass auch in einem ScrollPane von Java, mit aktiver Horizontal Bildlaufleiste darauf reagiert wird?

Alles was ich im Google gefunden habe behandelt Shift-Down und Mausrad Wheel! Aber ich habe nichts gefunden was das obige macht.

Vielen Dank für Ihre immer wieder geschätzte Hilfe.
Richi
 
Wahrscheinlich sendet deine Maus zusätzlich irgendwelche Tastendrücke mit, wie: Shift oder Strg. Du kannst zum Test mal zusätzlich zum MouseListener einen KeyListener erstellen und die Tasten loggen.
 
Wahrscheinlich sendet deine Maus zusätzlich irgendwelche Tastendrücke mit, wie: Shift oder Strg. Du kannst zum Test mal zusätzlich zum MouseListener einen KeyListener erstellen und die Tasten loggen.

Vielen Dank.
Habe ich schon probiert.

Gibt es noch andere Listener als:
  • MouseListener()
  • MouseMotionListener()
  • KeyListener()
Die sowas abfangen können? Bin wirklich nur ein Anfänger...

Habe ein Linux Mint Mathe.
Die Maus ist eine LogiTech und läuft ohne Treiber

Sowohl in Windows, Mac und Linux macht die Horizontale Bildlaufleise von JScrollPane NICHTS.

In allen Betriebssystemen funktioniert das mit dem Mausrad nach links/rechts klick in allen Anwendungen. Sogar in den gekauften Java Programmen.

Nur bei meinen Progrämmchen geht es nicht. Versteh die Java-Welt halt nicht wirklich. 😡

PS. Googeln OHNE Englisch-Kenntnisse bringt leider auch nichts... 😨
 
Und da hast Du isShiftDown - damit kannst Du feststellen, ob die Bewegung vertikal (false) oder horizontal (true) war.
Da kommt nur eine Meldung wenn ich die Taste "Shift" effektiv auf der Tastatur gedrückt habe und auch nur dann, wenn ich das Mausrad scrolle.

Wenn ich das Rad nach links / rechts drücke kommt auch bei gedrückter "Shift"-Taste nichts

😳 Warum funktioniert das bei professionellen reinen Java-Anwendungen (OS unabhängig)? Woher haben Die diese die Informationen?
Habe auch schon den UIManager bemüht. Ich komme auch nicht via Terminal / Eingabeaufforderung an gewünschte Information.

Aber irgendwie müssen das die Profis doch auch irgendwo herhaben. Ich verstehs nicht.
Richi
 
Zuletzt bearbeitet von einem Moderator:
Was mich gerade irritiert: Du hast kein Mausrad, das horizontal scrollen kann sondern das sind Mausclicks?

Die Daten werden garantiert ankommen an irgend einer Stelle nur eben habe ich keine solche Hardware und im Augenblick habe ich auch Probleme, das im Detail zu verstehen...

Evtl. macht es Sinn, einfach einmal alle Events abzufangen und dann die ganzen Details auszugeben. MouseWheelListener hatten wir jetzt in diesem Thread schon - und wenn das kommt, dann kannst Du alle Elemente ausgeben (Das ist viel, da ja durch die Vererbung auch InputEvent Dinge mit enthalten sind ... aber man kann ja alles ausgeben).

Und da Du sagst, dass Du mit dem Mausrad nach links oder rechts "clickst" - Dann sind es evtl. einfache Maustasten. Das wäre dann der MouseListener / MouseAdapter. Und da hast Du dann ja alle Events mit mouseClicked, mousePressed, mouseReleased, ....
Evtl. ist es ja das und Du kannst da auch alles ausgeben und dann siehst Du ja, ob Du so ein Event bekommst. Dann könntest Du mit getButton() schauen, was denn gedrückt wurde. Das gibt einen Integer aber an Konstanten sind nur BUTTON1 bis BUTTON3 und das NOBUTTON definiert. Aber den Wert kannst Du Dir ja ausgeben lassen.
 
Was mich gerade irritiert: Du hast kein Mausrad, das horizontal scrollen kann sondern das sind Mausclicks?
Ich denke schon, weil ich z.B im Excel/Calc das Mausrad nach rechts drücke, wandert die Horizontale (und auch das ganze Sheet) nach links resp. nach rechts bis zum Ende, wenn ich es nicht loslasse. Wenn ich nur kurz nach links/rechts drücke tönt es wie wenn ich eine Maustaste gedrückt und losgelassen hätte. Einfach "klick".
Und da Du sagst, dass Du mit dem Mausrad nach links oder rechts "clickst" - Dann sind es evtl. einfache Maustasten. Das wäre dann der MouseListener / MouseAdapter. Und da hast Du dann ja alle Events mit mouseClicked, mousePressed, mouseReleased, ....
Evtl. ist es ja das und Du kannst da auch alles ausgeben und dann siehst Du ja, ob Du so ein Event bekommst. Dann könntest Du mit getButton() schauen, was denn gedrückt wurde. Das gibt einen Integer aber an Konstanten sind nur BUTTON1 bis BUTTON3 und das NOBUTTON definiert. Aber den Wert kannst Du Dir ja ausgeben lassen.
Das ist es offensichtlich nicht??? Vlt. schon aber wie fängt man diese speziellen ab.
e.getButton() wirft nichts aus (egal in welchem Listener) wenn ich das Rad nach links/rechts kippe, aber bei der physischen Maus tönt es wie ein klick.

Wenn ich jedoch das Mausrad wie eine Maustaste nach unten drücke, wird mit e.getButton() das Rad als Button 2 ausgegeben.
 
Das ist es offensichtlich nicht??? Vlt. schon aber wie fängt man diese speziellen ab.
e.getButton() wirft nichts aus (egal in welchem Listener) wenn ich das Rad nach links/rechts kippe, aber bei der physischen Maus tönt es wie ein klick.
Wenn Du e.getButton() aufrufen kannst, dann bekommst Du also beim drücken des Mausrads nach links oder rechts ein Event? Oder was genau hast Du gemacht? Zeig doch mal den Code - ich nehme mal an, dass Du ein kleines Fenster gemacht hast mit den entsprechenden Event Listenern.

Und dann kannst Du im Detail sagen, was wann passiert.
 
Und dann kannst Du im Detail sagen, was wann passiert.
Leider NICHTS.

Wenn ich e.getButton() aufrufe, bekomme ich alle Buttons von 1-6 inklusife Button 2 wenn ich das Rad nach unten drücke.
Aber es erscheint keine Meldung (er geht nicht mal in den Listener) wenn ich das Rad nach links/rechts drücke.

Aber in allen Anwendungen (Firefox, Excel und sogar im einfachen Editor) wird wenn ich das Rad nach rechts drücke die Horizontale Bildlaufleiste nach RECHTS verschoben bis zum Ende und äquivalent der Inhalt nach Links verschoben.

Und wie gesagt auch bei den gekauften Java-Anwendungen (Steuersoftwar "SofTax" was ein reines Javaprogramm ist) funktioniert es.
Sowohl auf Window, Mac und Linux.
Nur eben wenn ich ein ScrollPane habe kriege ich es nicht gebacken.

Werde mal ein JFrame mit JScrollPane basteln, ohne viel drumrum und schauen ob es dann funktioniert.
Werde den Code dann hier Posten.

Vielen Dank schon mal.
Richi
 
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;

public class ScrollTest extends JFrame {

    private static final long serialVersionUID = 1L;

    public static void main(String[] args) {
        new ScrollTest();
    }
   
    public ScrollTest() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(150, 150, 300, 400);
       
        JPanel pan = new JPanel();
        pan .setPreferredSize(new Dimension(400, 600));
        pan.setBackground(new Color(242, 117, 117));
       
        JScrollPane scrollTab = new JScrollPane(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scrollTab.setPreferredSize(new Dimension(520, 300));
        scrollTab.setViewportView(pan);
        scrollTab.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("E-Button = "+e.getButton());
            }
        });
       
        getContentPane().add(scrollTab, BorderLayout.CENTER);
        setVisible(true);
    }

}
Es wird wirklich NICHTS geworfen...
Das muss etwas anderes als ein Klick-Ereignis sein! Nur wieso funktioniert es bei anderen aber bei mir nicht?

Vertikal scrollen funktioniert ohne irgendwelche Listener. Auch Horizontal scrollen bei gedrückter "Shift"-Taste funktioniert wenn ich das Rad scrolle!

Aber wenn ich das Rad nach links/rechts kippe, geht bei mir gar NICHTS.
 
m500s-gallery-01X.png
Das ist meine Maus und da kann man das Rad nach links/rechts dürcken.

Hier noch der Link: M500 INNOVATIVE Maus darauf ist es zu erkennen was ich meine. Die beiden Pfeile links und rechts neben dem Mausrad.
 
Hurra!!!
Ganz grossen Dank @KonradN

Hab mir alle Posts nochmals in Ruhe durchgelesen...!!!
Habe, warum auch immer den MouseListerner NICHT ans ScrollPane gehängt.

Jetzt wirft er mir beim drücken nach links den Button 4, und beim drücken nach rechts den Button 5!!!

Vielen, vielen Dank für Deine Versuche mich zu Erleuchten! Hat funktioniert.
Das Problem ist gelösst!!
Und das bedeutet mir viel!

Dankbaren Gruß
Richi
 
Noch mal zu Ergänzung: unter Linux kannst du im Terminal deiner Wahl das Programm xinput verwenden:
Bash:
xinput --list                                     
⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                  id=4    [slave  pointer  (2)]
⎜   ↳ Logitech Wireless Receiver Mouse            id=15    [slave  pointer  (2)]
⎣ Virtual core keyboard                       id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard                 id=5    [slave  keyboard (3)]
    ↳ Power Button                                id=6    [slave  keyboard (3)]
    ↳ Video Bus                                   id=7    [slave  keyboard (3)]
    ↳ Video Bus                                   id=8    [slave  keyboard (3)]
    ↳ Power Button                                id=9    [slave  keyboard (3)]
    ↳ Cooler Master Technology Inc. MasterKeys Pro S white    id=10    [slave  keyboard (3)]
    ↳ Cooler Master Technology Inc. MasterKeys Pro S white System Control    id=11    [slave  keyboard (3)]
    ↳ Cooler Master Technology Inc. MasterKeys Pro S white Consumer Control    id=12    [slave  keyboard (3)]
    ↳ Cooler Master Technology Inc. MasterKeys Pro S white Keyboard    id=13    [slave  keyboard (3)]
    ↳ FT FIDO KB                                  id=14    [slave  keyboard (3)]
    ↳ HP WMI hotkeys                              id=16    [slave  keyboard (3)]
Dann suchst du nach deiner Maus, hier id=15:
Bash:
xinput --test 15
Dient dann zur Ausgabe aller Mausaktionen.
 

Zurück
Oben