Ich habe einen MouseListener, den ich eine Funktion vorfabrizieren möchte, während die Maus gedrückt wird, bis es freigegeben wird. Gibt es trotzdem eine Mausfreigabe in einem MouseListener, anders als die Standardfunktion in der Schnittstelle, um dies zu tun (dies funktioniert nicht, weil es nicht aufgerufen werden kann, bis die Schleife beendet ist, aber für das Ende der Schleife erforderlich ist).MouseListener gepresste Schleife bis zur Freigabe
0
A
Antwort
0
Hier ist ein Beispiel, das/startet einen Thread erstellt, wenn die Maus gedrückt wird und stoppt den Faden, wenn die Maustaste losgelassen wird:
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
public class MouseDemo {
private static SomeThread thread = new SomeThread();
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("");
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
thread.interrupt();
thread = null;
System.out.println("bye.");
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("Click and Hold");
button.addMouseListener(new MouseListener() {
@Override
public void mousePressed(MouseEvent e) {
button.setText("Release");
thread = new SomeThread();
thread.start();
}
@Override
public void mouseReleased(MouseEvent e) {
button.setText("Click and Hold");
thread.interrupt();
}
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
frame.add(button);
frame.pack();
frame.setVisible(true);
}
}
class SomeThread extends Thread {
public void run() {
int iterations = 0;
while (true) {
iterations++;
System.out.println("The thread is running... " + iterations);
try {
Thread.sleep(25);
} catch (InterruptedException e) {
System.out.println("Thread stopped.");
return;
}
}
}
}
Verwandte Themen
- 1. XNA Schlüssel zur Freigabe?
- 2. Benutzerdefinierte "gepresste" UIBarButtonItem Hintergründe
- 3. Gepresste android Schaltflächenzustand-
- 4. Get QPushButton Gepresste Hintergrundfarbe
- 5. VBA Wie Schleife bis zur letzten verwendeten Zelle
- 6. Gepresste <button> CSS
- 7. NSMenu Gepresste Maustaste in 10.5
- 8. Gepresste Schaltflächen mit CSS3-Animation
- 9. C++, bleibt die absolute Adresse eines Objekts immer konstant bis zur Freigabe?
- 10. MouseListener auf JFrame
- 11. MouseListener funktioniert nicht
- 12. Einen MouseListener einrichten
- 13. java console mouselistener
- 14. MouseListener Klasse nie aufgerufen?
- 15. Java MouseListener transient
- 16. MouseListener - Repaint() funktioniert nicht
- 17. Register Mouselistener und Mouse gleichzeitig
- 18. Schleife Startdatum bis Enddatum
- 19. Schleife bis Fehler 424
- 20. Beschleunigung die Schleife bis
- 21. Schleife bis es wird
- 22. Mehrere Bereiche mit MouseListener übereinander
- 23. Verwenden von MouseListener mit vlcj
- 24. Link zu JCenter zur Freigabe von Maven central fehlt
- 25. FABMenuController zur Freigabe von FAB über Ansichtscontroller hinweg
- 26. Probleme mit paintComponent und mouseListener
- 27. Java Swing MouseListener Calling-Klassen
- 28. Hinzufügen von MouseListener zu Grafikobjekt
- 29. Android - Gepresste/Berührte Artikel in einem ListView
- 30. Firebase-Datenbank bis zur Authentifizierung
Führen Sie die Schleife in einem anderen Thread - vergessen Sie nicht, obwohl, GUI-Frameworks sind nicht threadsicher und sind eingängig! – MadProgrammer