Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Desktop-Applikationen und Grafik > Modifier haben einen Wert, obwohl keine gedrückt sind
Antwort
 
Themen-Optionen
Alt 04.11.2005, 18:45   Nach oben    #1
materthron
Gast
 
Beiträge: n/a
Standard Modifier haben einen Wert, obwohl keine gedrückt sind

Hallo!

Hier der Code:
Code:
public class Counter
	extends JComponent
	implements MouseListener, MouseWheelListener {
		
	private int wert = 0; //aktueller value (Standard = 0)
	
	/**
	 * Erzeugt einen Counter mit <code>n</code> als Startwerts 
	 * 
	 * @param value valid in
	 */
	public Counter(int value) {
		value = this.wert;
		addMouseListener(this);
		addMouseWheelListener(this);
	}
	
	public void paint(Graphics f) {
		Graphics2D g = (Graphics2D) f;
		
		g.setColor(Color.RED);
		String StrValue = String.valueOf(wert);
		
		int w = getWidth();
		int h = getHeight();
		
		g.setFont(new Font("Arial", Font.PLAIN, 46));
		
		FontMetrics metrics = g.getFontMetrics();
		int width = metrics.stringWidth(StrValue);
		int height = metrics.getHeight();
		
		
		g.drawString(StrValue, w / 2 - width / 2, h / 2 - height / 2);
	}
	
	/**
	 * Beim klicken auf die Komponente:
	 * linke Taste:    <code>wert</code> wird erhöht
	 * rechte Taste:   <code>wert</code> wird erniedrigt
	 * mittlere Taste: <code>wert</code> = 0
	 */
	public void mouseClicked(MouseEvent e) {
		System.out.println(e.getModifiers());
		//Welche Taste wurde gedrückt
		switch (e.getButton()) {
			
			//linke Maustaste
			case MouseEvent.BUTTON1 :
			{
			//wenn Modifikator gedrückt wurde
				if (e.getModifiers() != 0) {
					applyModifiers(e, +1);
				} else {
					wert++;
				};
			}
			
			//rechte Maustaste
			case MouseEvent.BUTTON3 :
			{
			//wenn Modifikator gedrückt wurde
				if (e.getModifiers() != 0) {
					applyModifiers(e, -1);
				} else {
					wert++;
				};
			}
			
			//mittlere Maustaste
			case MouseEvent.BUTTON2 :
			{
				wert = 0;
			}
		}
		repaint();
	}
	
	/**
	 * Wenn das Mausrad bewegt wurde:
	 * hinaufscrollen:   <code>wert</code> wird erhöht
	 * hinunterscrollen: <code>wert</code> wird erniedrigt
	 */	
	public void mouseWheelMoved(MouseWheelEvent e) {
		//wenn Modifikator gedrückt wurde
		if (e.getModifiers() != 0) {
			int as = e.getWheelRotation()*(-1); // Vorzeichen
			applyModifiers(e, as);
		} else {
			wert += e.getWheelRotation()*(-1);
		}
		repaint();
	}
	
	/**
	 * @param e das MouseEvent
	 * @param as das Vorzeichen
	 */
	private void applyModifiers(MouseEvent e, int as) {
		//Modifikator gedrückt
		int mod = e.getModifiers();
		switch (mod) {
			//STRG
			case 2 :
				wert += 500 * as;
			//SHIFT
			case 1 :
				wert += 100 * as;
			//ALT
			case 8 :
				wert += 10 * as;
		}
	}
	
	public void mousePressed(MouseEvent e) {
	}
	public void mouseReleased(MouseEvent e) {
	}
	public void mouseEntered(MouseEvent e) {
	}
	public void mouseExited(MouseEvent e) {
	}
}
Ich weiß applyModifiers is ned gut, aber mir is nix besseres eingefallen .

Und jetzt zum Problem:
in mouseClicked(
Code:
//linke Maustaste
case MouseEvent.BUTTON1 :
{
//wenn Modifikator gedrückt wurde
    if (e.getModifiers() != 0) {
	applyModifiers(e, +1);
	} else {
	    wert++;
    };
}
kann else garnicht ausgeführt werden, da misteriöserweise e.getModifiers einen Wert liefert, obwohl ich garnichts gedrückt hab.

Ich bin komplett verwirrt.
HILFE!!!!!
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.11.2005, 18:57   Nach oben    #2
Sym
Chefkoch-Mod
 
Benutzerbild von Sym
 
Registriert seit: 30.05.2004
Beiträge: 433
Standard

Was für einen Wert gibt er zurück? Ich bin mir jetzt nicht sicher, aber soll der Modifier 0 sein, wenn keiner gedrückt wurde. Vergleich doch einfach so:
Code:
if (e.getModifiers() == java.awt.event.InputEvent.BUTTON1_MASK) {...}
Das sollte helfen.

Übrigens kannst Du einen Wert kaum erniedrigen, weil er keine Persönlichkeit besitzt. Senken oder dekrementieren ist das Wort, was Du suchst.
__________________
Denk mal darüber nach...

Lars

ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen.
www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de
Sym ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.11.2005, 19:22   Nach oben    #3
materthron
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Sym
Was für einen Wert gibt er zurück? Ich bin mir jetzt nicht sicher, aber soll der Modifier 0 sein, wenn keiner gedrückt wurde. Vergleich doch einfach so:
Code:
if (e.getModifiers() == java.awt.event.InputEvent.BUTTON1_MASK) {...}
Das sollte helfen.
Funkt nicht.
Ich will ja überprüfen, ob modifier gedrückt worden sind.
Weil wenn z.B. SHIFT gedrückt wird ist der Modifier 1, bei STRG 2, zusammen 3. => keiner gedrückt 0
Oder?

Zitat:
Übrigens kannst Du einen Wert kaum erniedrigen, weil er keine Persönlichkeit besitzt. Senken oder dekrementieren ist das Wort, was Du suchst.
Danke
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.11.2005, 16:28   Nach oben    #4
Erfahrener Benutzer
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 425
Standard

Frage:
PHP-Code:
public Counter(int value) {
value this.wert;

das sollte doch this.wert = value heisen oder???

und mit
PHP-Code:
if (e.getModifiers() != InputEvent.BUTTON1_MASK) { 
geht es wunderbar
Xean ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Schlüssel in verschachteltem Array suchen und Wert zurückgeben Ben PHP-Programmierung 8 19.10.2006 18:54
Wert Varible in Listener anderer Klasse nutzen??? risa Desktop-Applikationen und Grafik 1 03.04.2006 07:36
Mit Checkbox bestimmten Wert Ändern Chriscom Datenbanken 12 14.03.2006 08:36
[smarty] Modifier betrifft alle Variablen die ausgegeben werden freezer PEAR, PECL und Frameworks 7 01.03.2006 18:24
[PHP] Kontrollstrukturen in PHP Jann Hendrik Tutorials 7 09.12.2004 21:28


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:26 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

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 33 34 35 36 37 38 39 40 41 42 43 44