Postion Y im Frame != Position Y ??

Status
Nicht offen für weitere Antworten.

Kell0g

Mitglied
Hallo leute.

Hab die Suchfunktion benutzt und leider nichts passendes gefunden, vllt habe ich auch falsch gesucht?, wenn ja dann sorry.
Naja mein Problem ist, dass bei mir die Positionen beim Zeichnen nicht stimmen, obwohl die den gleichen wert haben.

Ich habe eine Klasse MEintrag und dort habe ich für den jeweiligen Eintrag seine Werte (x und y ) gespeichert. In der Frame Klasse habe ich Positionen des "cursors" gespeichert. Wenn ich dann den y-wert des Eintrags benutze, um den Cursor auf die Höhe des Eintrags zu bringe, ist dieser etwas tiefer obwohl beide den gleichen Wert für y haben.
Damit der "Cursor" auf die höhe des Eintrags gelangt muss ich enige Pixel vom Y-Wert des eintrags abziehen.

hier ein bild von der situation:
postion.png


auf dem Bild haben der Eintrag, wie auch das Quadrat (der Test-Cursor) die gleiche Position.

was hab ich übersehen oder nicht beachtet??????:L

Danke schon mal für die Hilfe.
 

Schandro

Top Contributor
bei Graphics#drawString geben die Koordinaten die untere linke Ecke an, bei den meisten anderen Sachen geben die Kordinaten die obere linke Ecke an.
 

Kell0g

Mitglied
ahhh... ja so leicht kanns sein...-.-

danke dir.
Sorry für den,wie es aussieht, unnötigen Thread.:(

----
Edit: Obwohl hmm... naja wenn er bei einem von oben bei anderen von unten messen würde, müsste dass doch anders aussehen.

der unterschied ist grad mal ca. 13Pixel

Wenn aber eins von oben 400Pixel und bei anderem von unten 400 Pixel Abstand beträgt(bei einer Frame Höhe von 600)dann dürften sie doch nich nebeneinander liegen?

oder stell ich mich gerade dumm an?
 
Zuletzt bearbeitet:

Wildcard

Top Contributor
die y Koordinate ist immer noch von oben nur wird die Schrift nicht nach unten 'aufgezogen,', sondern für Text gibt die y Koordinate die Baseline der Schrift an. Auf dieser gedachten Linie sitzen die Buchstaben.
 

Schandro

Top Contributor
ne, der "Nullpunkt" (0|0) des Fensters/Panels/... ist immer links oben.

Wenn du ein Rechteck mit g.drawRect(10,10,5,5) malst, dann ist der
oberste linke Punkt bei (10|10)
der oberste rechte Punkt bei (15|10)
der unterste linke Punkt bei (10|15)
der unterste rechte Punkt bei (15|15)

das heisst die koordinaten, die du drawRect mitgibst (in diesem Fall (10|10) ) stehen für die oberste linke Ecke des Rechtecks.

Das ist bei fast allen Sachen so.

Bei drawString beginnt dagegen die Baseline bei den mitgegebenen Koordinaten, das heist der Hauptteil des Textes ist überhalb der mitgegebenen Y-Koordinate
 

Kell0g

Mitglied
hey ihrs.

habe mal wieder ein problem mit meinem Menü und irgendwie weiß ich nicht voran das liegt. Bestimmt wieder irgend ne Kleinigkeit, die ich nicht sehe.
Ich habe meine Menüeinträge in einem Array. Das erste Element ist halt der oberste Eintrag und somit ist der unterste Eintrag das letzte Element.
das Auswählen der Einträge nach unten funktioniert. Das Problem liegt in der umgekehrten Richtung.
Der code für das Bewegen des Cursors nach unten sieht so aus:
Java:
if (ke.getKeyCode() == ke.VK_DOWN) {
   if (nach_unten) {
       System.out.println("Unten!");
       getAktPosition();
       curs_pY = player.p1.MEintraege[akt_pos++].y - 13;
       if (curs_pY >= player.p1.MEintraege[player.p1.MEintraege.length - 1].y) {
	      nach_unten = false;
       }
   }
}
Zuerst wird halt die y- Position des nächsten Eintrags ermittelt und anschließend dem Cursor zugewiesen ( dabei werden 13 Pixel abgezogen, damit der cursor mittig vom Eintrag erscheint )
Wenn es der letzte Eintrag ist, soll es verhindenr werden, dass der Cursor noch weiter nach unten bewegt wird.
Nach oben müsste es doch genauso gehen. Es wird jediglich der y-Wert des vorherigen Eintrags ermittelt und nicht des nächsten.
Also:
Java:
if (nach_oben) {
	System.out.println("OBEN!!");
	getAktPosition();
	curs_pY = player.p1.MEintraege[akt_pos - 1].y - 13;
	if (curs_pY <= (player.p1.MEintraege[0].y - 13)) {
		nach_oben = false;
	} else {
		nach_oben = true;
	}
}

Das Problem ist, dass nichts passiert wenn ich nach oben drücke. Es wird jediglich "OBEN" auf der Konsole ausgegeben.
Der Cursor wird nicht eine Position höher gezeichnet.
So wird der Cursor gezeichnet:
Java:
//Cursor
g.drawRect(curs_pX, curs_pY, 10, 10);

Hoffe ihr könnt mir den blöden Fehler erklären.
Danke schonmal im vorraus.
 
Zuletzt bearbeitet:

Schandro

Top Contributor
Aus dem nach unten Block:
Java:
curs_pY = player.p1.MEintraege[akt_pos++].y - 13;
Aus dem nach oben Block:
Java:
curs_pY = player.p1.MEintraege[akt_pos - 1].y - 13;
Beim 1. veränderst du die akt_pos Variable dauerhaft, beim 2. nicht.
 

Kell0g

Mitglied
aha aha. danke aber warum ist das so??
ich mein die Zeilen sind doch identisch, ausser dass bei dem Ersten das nächste element genommen wird, und beim zweiten das vorherige.
 

Schandro

Top Contributor
Java:
myInt++
gibt den Wert von myInt um eins erhöht zurück UND erhöht den Wert der Variable myInt um eins

Java:
myInt + 1
gibt nur den Wert von myInt um eins erhöht zurück. Es verändert die Variable nicht.
 

Kell0g

Mitglied
ahja...grml....blöd von mir.
aber mit akt_pos-- klappt es auch nicht. Da kommt dann nicht mal die "oben" ausgabe auf der konsole.

--
edit:
weiß da jemand wie ich das lösen kann??
 
Zuletzt bearbeitet:

Kell0g

Mitglied
Aus dem nach unten Block:
Java:
curs_pY = player.p1.MEintraege[akt_pos++].y - 13;
Aus dem nach oben Block:
Java:
curs_pY = player.p1.MEintraege[akt_pos - 1].y - 13;
Beim 1. veränderst du die akt_pos Variable dauerhaft, beim 2. nicht.


das dürfte nicht das Problem sein, solange die richtigen Werte an curs_y übergeben werden.
mit getPosition(), über der Zuweisung, wird die aktuelle position des cursors ermittelt.
somit weiß ich welcher Eintrag im Menü gerade ausgewählt ist.
wenn die akt_pos des Eintrags z.b. 2 ist dann ist akt_pos-1 = 1.
somit wird curs_pY der y wert des Eintrags an Position 1 zugewiesen und das ist richtig.
Ob akt_pos dauerhaft verändert wird oder nicht ist hier doch egal? hauptsache der Cursor bekommt den richtigen Wert.

woran liegt es dann?
 

Kell0g

Mitglied
soo hab das Problem gelöst! Wunder mich nur, warum es mir nicht aufgefallen ist,obwohl ich mir die Werte ausgeben ließ.

Naja das Problem lag an der falschen Nummerierung, durch mich..:D
und zwar sind die einträge im array ja von 0 - n und die Positionnummern von 1 - n.

wenn ich dann z.b. vom 3. in den 2. Eintrag springen will, wird der y-wert der vorherigen Position dem cursor zugewiesen. also y-wert von 3-1 = 2. 2 ist aber der dritte Eintrag im array. Somit lande ich immer auf dem Eintrag auf dem ich grad bin.:lol:
tja dummer Fehler aber zum Glück hab ich den doch noch gefunden...:D:applaus:


kann geschloßen werden.
 
H

HobbyProgger

Gast
Hallo Leute, ich hole dieses alte Thema nochmal hoch, weil ich ein ähnliches Problem habe:

ich speichere beim Schließen eines Fensters dessen Position [ wnd.getLocation() ]. Beim nächsten Programmstart werden die alten Positionswerte wieder ausgelesen und die Position des Fensters damit gesetzt [ wnd.setLocation( config.windowPosition ) ]. Leider wird das Fenster dabei immer ein Stückchen weiter unten gezeichnet. Es sind immer 21 Pixel, was genau der Höhe der Titelleiste entsprechen dürfte (Enlightement16).

Als "Workaround" lese ich momentan nach dem Setzen der Fenster-Koordinaten diese gleich wieder aus und berechne die Differenz zum ursprünglichen gespeicherten Wert. Wenn ich dann wie folgt das Fenster um diese Different verschoben zeichne:

config.windowPosition.y -= diff;
wnd.setLocation( config.windowPosition );

Dann stimmt die Fensterposition bei jedem zweiten Programmstart leider immer noch nicht... (zur Hälfte stimmte es dann aber)

Woran liegt das? Was mache ich falsch?? :(
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T IllegalComponentStateException The Frame is Displayable AWT, Swing, JavaFX & SWT 8
Fragerjava Frame inhalt komplett löschen AWT, Swing, JavaFX & SWT 4
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
Kotelettklopfer Frame ändert Farbe nicht AWT, Swing, JavaFX & SWT 12
P Swing Zufallsbilder auf Frame ausgeben AWT, Swing, JavaFX & SWT 1
D AWT Wie kann ich ein Frame von einem anderen aus beeinflussen? AWT, Swing, JavaFX & SWT 7
R 2D-Grafik Massive Frame Drops beim Benutzen von AffineTransformOp AWT, Swing, JavaFX & SWT 2
C Swing F5 Taste neu laden auf ganzen Frame AWT, Swing, JavaFX & SWT 9
J Genutzte Methoden in einen Frame einbauen AWT, Swing, JavaFX & SWT 21
H Swing Frame an andere Klassen weitergeben AWT, Swing, JavaFX & SWT 4
olfibits Swing JavaFX-Frame in JDesktopPane darstellen? AWT, Swing, JavaFX & SWT 2
F Swing Frame nach vorne holen AWT, Swing, JavaFX & SWT 2
J Panel auf Frame positionieren AWT, Swing, JavaFX & SWT 9
K Frame aus anderer Klasse schließen AWT, Swing, JavaFX & SWT 3
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
S Tastatur frame nur nur 1 mal öffnen AWT, Swing, JavaFX & SWT 1
T Swing Java-Frame bei Programmstart NICHT im Vordergrund öffnen AWT, Swing, JavaFX & SWT 2
A Programm nun in ein Frame basteln AWT, Swing, JavaFX & SWT 1
T Frame öffnet nicht AWT, Swing, JavaFX & SWT 1
A Swing GUI - Button soll Frame verändern AWT, Swing, JavaFX & SWT 4
Java_RY AWT Frame in eine eigene klasse auslagern und aufrufen AWT, Swing, JavaFX & SWT 6
S mit keylistener frame schliessen AWT, Swing, JavaFX & SWT 8
Thallius Wer oder was bestimmt welches Frame toFront kommt wenn ein anderes geschlossen wird? AWT, Swing, JavaFX & SWT 8
Z Swing Frame wird geöffnet, aber ist ohne Inhalt AWT, Swing, JavaFX & SWT 0
J Panel auf Frame löschen und neues Panel Hinzufügen AWT, Swing, JavaFX & SWT 4
D Frame beim starten eines anderen Frames schließen AWT, Swing, JavaFX & SWT 2
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3
M Internal Frame in den vordergrund AWT, Swing, JavaFX & SWT 4
Tausendsassa Frame öffnet aber zeigt keinen Inhalt... AWT, Swing, JavaFX & SWT 10
Tom299 JavaFX Ähnliche Komponente wie der VB6 Frame? AWT, Swing, JavaFX & SWT 2
L Swing Frame in Thread wird nicht gezeichnet AWT, Swing, JavaFX & SWT 2
K Swing JScrollPane - JScrollBar anzeigen, wenn Frame verkleinert wird AWT, Swing, JavaFX & SWT 3
D Buttons erscheinen nicht auf Frame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
B Frame hängt sich auf trotz invokeLater AWT, Swing, JavaFX & SWT 1
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
M JavaFX wie kann mann sein frame mit einem Icon fersehen? AWT, Swing, JavaFX & SWT 2
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
P Frame friert ein AWT, Swing, JavaFX & SWT 6
Z Frame mit Rechteck! AWT, Swing, JavaFX & SWT 16
Messoras JWindow/Frame durch das man durchklicken kann AWT, Swing, JavaFX & SWT 5
M Swing "Frame.setResizable(false);" verschiebt Content? AWT, Swing, JavaFX & SWT 9
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
J JTable aktuallisieren über anderen Frame AWT, Swing, JavaFX & SWT 6
J JTable Zeile anklicken und neues Frame öffnen AWT, Swing, JavaFX & SWT 4
S Quadrat auf Frame zeichnen AWT, Swing, JavaFX & SWT 2
B JFrame immer an gleicher stelle auf anderem Frame AWT, Swing, JavaFX & SWT 5
F JAVA-EDITOR: Panel in Frame aufnehmen AWT, Swing, JavaFX & SWT 3
B Swing JMenuBar unten in der Frame setzen? AWT, Swing, JavaFX & SWT 15
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
L JButton im Frame fest verankern AWT, Swing, JavaFX & SWT 0
D Buttons erscheinen nicht auf dem zweiten Frame AWT, Swing, JavaFX & SWT 4
X Swing Größe eines Fensters JFrame / Frame AWT, Swing, JavaFX & SWT 5
BRoll Frame- Video einbinden machbar? AWT, Swing, JavaFX & SWT 6
Kandum obj_JMenu.addMenuListener - variable Anzahl an JMenus / menulistenern & frame.setTitle() dynamisch AWT, Swing, JavaFX & SWT 7
B Frame always on top nur auf anderem Frame AWT, Swing, JavaFX & SWT 9
S Aufteilung von JPanels in einem Frame AWT, Swing, JavaFX & SWT 13
K Options-Frame integrieren (zum zuschalten und wegschalten wie geht man da ran? AWT, Swing, JavaFX & SWT 7
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
N Swing Endlosschleife blockt Frame AWT, Swing, JavaFX & SWT 11
B Swing JDialog modal, aber trotzdem Frame auswählbar AWT, Swing, JavaFX & SWT 2
N Swing Frame ungewollt transparent! AWT, Swing, JavaFX & SWT 2
J Kleines Anzeige Problem(nur blanker Frame) AWT, Swing, JavaFX & SWT 22
D Neues Frame öffnen - und dazu altes schließen AWT, Swing, JavaFX & SWT 5
Daniel_L Drop von Dateien auf Frame - welche Drop-Location? AWT, Swing, JavaFX & SWT 2
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
C LookAndFeel Frame updated nicht vollständig AWT, Swing, JavaFX & SWT 9
K 3D-Grafik Canvas ist ein eigener Frame?! AWT, Swing, JavaFX & SWT 13
L Jbutton + jcombobox mit vorhandenen frame verknüfen AWT, Swing, JavaFX & SWT 8
J 2 Bereiche im Frame komplett nutzen - Welchen Layoutmanager? AWT, Swing, JavaFX & SWT 3
Z Swing JTextfield auf Frame AWT, Swing, JavaFX & SWT 13
N Swing Frame mit GlassPane und Popup AWT, Swing, JavaFX & SWT 5
L Frame Schließen und neustarten AWT, Swing, JavaFX & SWT 4
L Mehre Panels einen Frame zuweisen AWT, Swing, JavaFX & SWT 11
P Frame "always on top" und welche GUI? AWT, Swing, JavaFX & SWT 5
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
S JMenuBar Frame Abstand AWT, Swing, JavaFX & SWT 3
J Swing Frame öffnen aus Frame mit JButton AWT, Swing, JavaFX & SWT 2
X Alte Frame-Größe beim wiederholten Aufruf AWT, Swing, JavaFX & SWT 5
M erstes Frame wartet auf die Auswertung eines zweiten AWT, Swing, JavaFX & SWT 8
J Frame-Steuerelement AWT, Swing, JavaFX & SWT 2
L Swing Flackern in Frame bei erstem Klick AWT, Swing, JavaFX & SWT 19
F Hintergrundbild im Frame AWT, Swing, JavaFX & SWT 11
S Zeichnen führt zu transparentem Frame AWT, Swing, JavaFX & SWT 6
S Swing Frame und Klasse extends JPanel - Komponenten zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 18
B Frame im Frame? AWT, Swing, JavaFX & SWT 4
C WindowListener Frame AWT, Swing, JavaFX & SWT 8
P klassenübergreifendes Frame AWT, Swing, JavaFX & SWT 6
B Text soll nich über das Frame hinausgehen AWT, Swing, JavaFX & SWT 5
J Hintergrund Label-Frame AWT, Swing, JavaFX & SWT 3
Spin JFrame/ Frame Drag and Drop AWT, Swing, JavaFX & SWT 13
S Swing Panelgröße anpassen wenn Frame maximiert wird AWT, Swing, JavaFX & SWT 2
K MouseListener für Objekte auf einem Frame AWT, Swing, JavaFX & SWT 4
3 Eigenes Frame/Window programmieren AWT, Swing, JavaFX & SWT 2
A Hintergrund von einem Frame ändern AWT, Swing, JavaFX & SWT 3
D Mehrere JTabel in einem Frame positionieren AWT, Swing, JavaFX & SWT 5
M Im Frame wird nur die Menüleiste erstellt und nicht die Tabelle? AWT, Swing, JavaFX & SWT 3
N Swing außerhalb des Hauptframe Komponente/Frame öffnen AWT, Swing, JavaFX & SWT 2
T Mehrere sich bewegende Objekte in einem Frame AWT, Swing, JavaFX & SWT 14
J "Warte Frame" AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben