Cursor Frage

qexxler

Aktives Mitglied
Guten Morgen zusammen,

folgende Situation:

Ich lade aus einem Verzeichnis die entsprechenden Objekte in eine interne Datenstruktur. Wärend des Einleseprozess setze ich eine GlassPane und deaktiviere mein
Java:
JFrame window
Gleichzeitig setze ich den Look des aktuellen Cursors auf
Java:
Cursor.WAIT_CURSOR
Funktioniert soweit. Nur ist es so, dass wenn ich den Cursor während des Einleseprozess bewege, er solange in den Look des normalen Cursors geht, also
Java:
Cursor.DEFAULT_CURSOR
, bis ich meine Maus nicht mehr bewege. Ist das normal, oder mache ich etwas falsch?

Hier einen Auszug aus meiner Programm.

  • lock - Zum Sperren des Frames, setzen des Looks für den Cursor, Laden des Bestands
  • unlock - Entsperren des Frames, setzen des Locks für den Cursors

Java:
public void lock() {
	window.getGlassPane().setVisible(true);
	window.getGlassPane().requestFocusInWindow();
	window.setEnabled(false);
	window.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

	new Thread(new Runnable() {
		@Override
		public void run() {
			loadDatabase();
			SwingUtilities.invokeLater(new Runnable() {
				@Override
				public void run() {
					unlock();
				}
			});
		}
	}).start();
}

public void unlock() {
	window.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
	window.getGlassPane().setVisible(false);
	window.setEnabled(true);
}

Könnt ihr mir vielleicht helfen?
 
Zuletzt bearbeitet:

qexxler

Aktives Mitglied
Hallo eRaaaa,

vielen Dank für deinen Tipp. Das Problem, dass es meinen Cursor wieder auf die Standardvariante zurücksetzt, ist damit behoben. Perfekt.

Nur kann nun der User wieder mit meiner GUI, während des Einlesprozess, interagieren, was ich mit dem setEnabled(false) verhindern wollte. Gibt es dafür vielleicht noch eine andere Möglichkeit?
 

kaoZ

Top Contributor
normalerweise dürfte der User doch schon durch die glassPane nicht mit deiner Gui interagieren können , solange diese aktiv ist ?! oder täusche ich mich ? zumindest insofern Buttons dahinter liegen und du nicht anhand der mauskoordinaten die klicks/events abfängst
 
Zuletzt bearbeitet:

qexxler

Aktives Mitglied
Also bei mir kann der Benutzer mit der GUI noch interagieren, was ich leider nicht möchte. Hmm
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor

qexxler

Aktives Mitglied
Guten Morgen zusammen,

den Artikel hatte ich mir auch einmal angeschaut, allerdings erschien mir das in meinem Fall anders zu sein. Ich poste hier einmal ein ausführbares Programm mit dem Problem.

Java:
package javaForum.cursorFrage;

// awt import
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;

// swing import
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;

public class DefaultFrame {
	private JFrame window;
	private JTabbedPane tabbedPane;

	// start application
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				DefaultFrame window = new DefaultFrame();
				window.setVisible(true);
				window.lock();
			}
		});
	}
	
	// constructor...
	public DefaultFrame() {

		window = new JFrame();
		window.setTitle("java-forum.org - Cursor Frage");
		window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		init();
		
		window.setSize(400, 400);
		window.setGlassPane(new MyGlassPane());
		window.pack();
		window.setLocationRelativeTo(null);
	}

	public void setVisible(boolean visible) {
		window.setVisible(visible);
	}

	private void init() {

		// init...
		java.awt.Container con = window.getContentPane();
		con.setLayout(new BorderLayout(5, 5));
		tabbedPane = new JTabbedPane(JTabbedPane.TOP);

		// add...
		con.add(tabbedPane, BorderLayout.CENTER);

		// local class...
		class TabbedPane extends JComponent {
			public TabbedPane(String str) {
				add(new javax.swing.JLabel(str));
			}
		}
		
		tabbedPane.addTab("#1", new TabbedPane("#1"));
		tabbedPane.addTab("#2", new TabbedPane("#2"));

	}

	public void lock() {
		window.getGlassPane().setVisible(true);
		window.getGlassPane().requestFocusInWindow();
		// window.setEnabled(false);
		window.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

		new Thread(new Runnable() {
			@Override
			public void run() {

				final int iEnd = 10;
				
				// loading data...
				for (int i = 0; i < iEnd; i++) {

					try {
						Thread.sleep(1000);
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
				SwingUtilities.invokeLater(new Runnable() {
					@Override
					public void run() {
						unlock();
					}
				});

			}
		}).start();
	}

	public void unlock() {
		window.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
		window.getGlassPane().setVisible(false);
		window.setEnabled(true);
	}


	/* GlassPane */
	private class MyGlassPane extends JPanel {

		private static final long serialVersionUID = 1L;

		public MyGlassPane() {
			setOpaque(false);
			setBackground(new Color(0, 0, 255, 255 / 4));
			addComponents();
		}

		@Override
		protected void paintComponent(java.awt.Graphics g) {
			g.setColor(getBackground());
			g.fillRect(0, 0, getSize().width, getSize().height);
		}

		private void addComponents() {
			setLayout(new BorderLayout(0, 0));
		}
	}

}

Vielleicht kann es helfen.
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
Naja wie gesagt, ich würde die Mouse- und Key-Events schlucken und setFocusTraversalKeysEnabled auf false setzen. Ändere mal deine Panel-Klasse
Code:
MyGlassPane
wie folgt:

Java:
/* GlassPane */
	private class MyGlassPane extends JPanel implements KeyListener{

		private static final long serialVersionUID = 1L;

		public MyGlassPane() {
			setOpaque(false);
			setBackground(new Color(0, 0, 255, 255 / 4));
			addComponents();
			addMouseListener(new MouseAdapter() {
			});
			addMouseMotionListener(new MouseMotionAdapter() {
			});
			addKeyListener(this);
			setFocusTraversalKeysEnabled(false);
		}
		
		public void keyPressed(KeyEvent e) {
			e.consume();
		}

		public void keyTyped(KeyEvent e) {
			e.consume();
		}

		public void keyReleased(KeyEvent e) {
			e.consume();
		}

		@Override
		protected void paintComponent(java.awt.Graphics g) {
			g.setColor(getBackground());
			g.fillRect(0, 0, getSize().width, getSize().height);
		}

		private void addComponents() {
			setLayout(new BorderLayout(0, 0));
		}
	}
 

qexxler

Aktives Mitglied
Guten Morgen zusammen,

habe mir gerade deinen geposteten Code einmal genau angeschaut und muss sagen, dass es wirklich genau das Problem löst, was ich noch hatte. Bin selbst noch nicht soo ganz vertraut mit den ganzen Einstellungsmöglichkeiten, die mit die Components bieten.

Auf jeden Fall ein dickes Danke an dich, dass du dir die Zeit genommen hast. Habe wieder etwas mehr dazu gelernt.

Gruß Sascha
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
E verschiedene Cursor setzen AWT, Swing, JavaFX & SWT 1
E JavaFX Cursor-Position im ScrollPane AWT, Swing, JavaFX & SWT 0
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
domjos1994 JavaFX Element auswählen auf dem der Cursor ist AWT, Swing, JavaFX & SWT 1
Tom299 JavaFX Default-Cursor läßt sich nicht immer "aktivieren" AWT, Swing, JavaFX & SWT 3
N Cursor im JTextField AWT, Swing, JavaFX & SWT 6
B setCursor() lässt Cursor ganz verschwinden AWT, Swing, JavaFX & SWT 9
Madlip SWT Probleme mit SWT.CURSOR AWT, Swing, JavaFX & SWT 2
B Swing Cursor-Transparenz AWT, Swing, JavaFX & SWT 2
A Swing GlassPane Cursor wird bei fremder Komponente nicht angezeigt AWT, Swing, JavaFX & SWT 3
B Swing Eigenen Cursor setzen AWT, Swing, JavaFX & SWT 10
B Cursor Farbe ändern AWT, Swing, JavaFX & SWT 6
J Cursor blinken ausschalten AWT, Swing, JavaFX & SWT 4
J Swing Cursor von Child falsch, wenn Parant disabled AWT, Swing, JavaFX & SWT 2
Zettelkasten Cursor nicht anzeigen lassen AWT, Swing, JavaFX & SWT 2
C Cursor AWT, Swing, JavaFX & SWT 5
T Swing JTable - true zurückbekommen, wenn der Cursor in einer Zelle blinkt AWT, Swing, JavaFX & SWT 7
K mehrere JTextFields - wie finde ich die Cursor-Position? AWT, Swing, JavaFX & SWT 5
M Swing [JTextPane] Cursor lässt sich nicht mit Pfeiltasten bewegen AWT, Swing, JavaFX & SWT 3
T Cursor im JPanel fangen AWT, Swing, JavaFX & SWT 2
D cursor bild und mouslistner AWT, Swing, JavaFX & SWT 9
M Cursor setzen im JTextPane AWT, Swing, JavaFX & SWT 3
hdi Custom Cursor: Problem mit Größe AWT, Swing, JavaFX & SWT 5
S AWT Eigenen Cursor im Frame verwenden... AWT, Swing, JavaFX & SWT 5
D JTextField behält meinen cursor nicht AWT, Swing, JavaFX & SWT 3
G Cursor Bewegung tracken AWT, Swing, JavaFX & SWT 2
H Flexibler Cursor AWT, Swing, JavaFX & SWT 8
G Komponente in der der Cursor steht zurückgeben? AWT, Swing, JavaFX & SWT 2
D Bild Cursor AWT, Swing, JavaFX & SWT 5
D JTextAray und Cursor AWT, Swing, JavaFX & SWT 11
T Problem mit dem Cursor AWT, Swing, JavaFX & SWT 7
R Den Cursor setzen AWT, Swing, JavaFX & SWT 5
M Problem mit Cursor für Panels AWT, Swing, JavaFX & SWT 4
M Cursor wird nach JFileChosser nicht gesetzt AWT, Swing, JavaFX & SWT 3
B Spezieller Cursor in Swing AWT, Swing, JavaFX & SWT 7
T Markierten Mausbereich erfassen, Text beim Cursor platzieren AWT, Swing, JavaFX & SWT 6
V Cursor zu Groß AWT, Swing, JavaFX & SWT 4
T Cursor setzen AWT, Swing, JavaFX & SWT 3
L wie den Cursor von einem TextFeld zum anderen setzen? AWT, Swing, JavaFX & SWT 3
B Cursor zentriert in ein Textfeld positionieren AWT, Swing, JavaFX & SWT 2
E Cursor in JTextPane versetzen? AWT, Swing, JavaFX & SWT 19
D Farbe einer Grafik über den Cursor abfragen AWT, Swing, JavaFX & SWT 6
M Cursor im deaktivierten JInternalFrame AWT, Swing, JavaFX & SWT 2
A Cursor Icon bei DnD aus nativen Anwendungen AWT, Swing, JavaFX & SWT 2
S Cursor über JButton ändern AWT, Swing, JavaFX & SWT 4
V JTextField Focus Cursor setzen AWT, Swing, JavaFX & SWT 2
U Cursor beim Drag and Drop AWT, Swing, JavaFX & SWT 8
T JTextArea, in welcher Zeile befindet sich der Cursor AWT, Swing, JavaFX & SWT 25
clemson Cursor in JTable-Cell setzen AWT, Swing, JavaFX & SWT 6
P [TextField] cursor setzten AWT, Swing, JavaFX & SWT 2
Luma Keinen Cursor in JDialog? AWT, Swing, JavaFX & SWT 9
G Focus so setzen, daß in einer jTextArea der Cursor blinkt AWT, Swing, JavaFX & SWT 7
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 10
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
D Frage zu ActionListenern und AvtionEvents AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
F JavaFX Frage zum Logging AWT, Swing, JavaFX & SWT 6
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
J Frage zu setuserdata AWT, Swing, JavaFX & SWT 1
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
T JavaFX Frage zum FX-Loader AWT, Swing, JavaFX & SWT 3
B drawRect Frage und Aufgabenstellung AWT, Swing, JavaFX & SWT 10
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
S Frage zu java.awt.EventQueue AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Frage zum Loggen von Fehlern AWT, Swing, JavaFX & SWT 3
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
X Kurze Frage zu JPopup AWT, Swing, JavaFX & SWT 3
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
J Swing Frage zur Vorgehensweise (JTable?, JLabels?) AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
D MVC Frage AWT, Swing, JavaFX & SWT 6
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
M Frage zu Threads AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben