Grösse eines Graphikobjektes ermitteln

Status
Nicht offen für weitere Antworten.

JavaMike

Neues Mitglied
Hallo zusammen!

Ich habe folgendes Problem: Als Aufgabe müssen wir sich bewegende Kreise in einem Applet darstellen. Bis jetzt auch kein Problem, das funktioniert alles tiptop. Die Kreise haben rechts einen Namen z.B. "Kreis:01". Wenn der Kreis an den rechten Rand kommt, verschiebt sich dieser Text aber leider ausserhalb des Applets.
Die Lösung wäre eigentlich einfach, ich müsste nur wissen, wie gross mein ganzes Kreisobjekt (Kreis + Text) ist und dann diese Gröse von windowheight (siehe Code) abziehen. Wie finde ich aber diese Grösser heraus??

Hier mal mein Code für den Kreis:

Code:
import java.awt.*;

class Kreis extends Gegenstand implements Runnable {
    private static final double PI = 3.14159;
    
    private double radius;
    private int windowHeight;
    private int windowWidth;
       
    /**
     * @param name Name des Balls
     * @param color Farbe des Balls
     * @param xPos Startposition x-Komponente
     * @param yPos Startposition y-Komponente
     * @param xGeschw Geschwindigkeit in x-Richtung
     * @param yGeschw Geschwindigkeit in y-Richtung
     * @param radius Radius des Balls
     * @param windowWidth Fensterbreite
     * @param windowHeight Fensterhöhe
     */
    public Kreis(String name, Color color, int xPos, int yPos, int xGeschw, int yGeschw, int radius, int windowWidth, int windowHeight) {
        // perform all initialization for this object
        super(name, color, xPos, yPos, yGeschw, xGeschw); // initialize the super-class
        this.radius = radius; 
        this.windowHeight = windowHeight;
        this.windowWidth = windowWidth;
        
        // after initialization, start the thread for this object
        super.start();
    }
    
    public double flaeche() {
        return (PI * radius * radius);
    }

    public void paint(Graphics pGraphics) {
            pGraphics.setColor(color);
            pGraphics.fillOval(xPosition, yPosition, (int) (2*radius), (int) (2*radius));
            pGraphics.drawString(name, (int) (xPosition + 2 * radius + 5), (int) (yPosition + 2 * radius));
    }
    
    public void run() {
        while(running) { // continue until we are told to stop
            // vertical position
            if (yGeschwindigkeit < 0) {
                if ((yPosition + yGeschwindigkeit) < 0) yGeschwindigkeit = 0 - yGeschwindigkeit;
            }
            else {
                if ((yPosition + yGeschwindigkeit) > windowHeight - 2 * radius) yGeschwindigkeit = 0 - yGeschwindigkeit; //Damit der Ball nicht aus dem Fenster "rutscht" wird 2 * radius abgezogen
            }
            yPosition += yGeschwindigkeit;
            
            // horizontal position
            if (xGeschwindigkeit < 0){
            	if ((xPosition + xGeschwindigkeit) < 0) xGeschwindigkeit = 0 - xGeschwindigkeit;
            }
            else {
            	if ((xPosition + xGeschwindigkeit) > windowWidth - 2 * radius) xGeschwindigkeit = 0 - xGeschwindigkeit; //Damit der Ball nicht aus dem Fenster "rutscht" wird 2 * radius abgezogen
            }
            xPosition += xGeschwindigkeit;

            try { Thread.sleep(50); }
            catch(InterruptedException e) {}
        }
        
        objectThread = null; // dereference the thread - not really necessary, but a nicety
    }
    
}

Ich hoffe, ich konnte mich verständlich ausdrücken...;)

Besten Dank!
 

xKrinklex

Mitglied
hi,
wenn ich dich richtig verstanden habe müsste die größe des kreises doch ganz normal radius*2 sein oder?

nun stellt sich nur noch die frage was du mit deinem namen machst, den übergibts du ja an deine Gegenstand-Klasse, nur was dort passiert geht ja aus deinen Sourcen nicht hervor. Solltest du den Namen auf ein Component packen, zum beispiel ein JLabel o.ä. bräuchtest du nur hiervon die Größe abfragen, sollte der Name irgendwie "frei" reingeschrieben werden wirds glaub ich problematischer, da weiß ich spontan keine möglichkeit die unabhängig von der anzal der Buchstaben des namen funzt, es sei denn du zählst die Anzahl der buchstaben und sagst jeder bcuhstabe hat ca soundsoviel pixel oder so...das erscheint mir aber keine gute lösung.

desweiteren stellt sich zumindest mir die Frage, wie der Name am Kreis angebracht ist? das ist natürlich für die Größen berechnung auch wichtig, ob es dort nen Abstand gibt, die Pixelgenau aneinander kleben oder der text ein bißchen in den Kreis hineinragt....


hoffe ich konnte ein bisserl helfen

gruß
 
B

Beni

Gast
So richtig viel Informationen über Text kannst du mit einem "java.awt.font.TextLayout" erhalten.

Auch die "FontMetrics", die man über das Graphics-Objekt beziehen kann, bieten einige Infos zur Grösse.
 

JavaMike

Neues Mitglied
xKrinklex hat gesagt.:
nun stellt sich nur noch die frage was du mit deinem namen machst, den übergibts du ja an deine Gegenstand-Klasse, nur was dort passiert geht ja aus deinen Sourcen nicht hervor.

Nö, das macht nicht die Gegenstand-Klasse, das macht die Kreisklasse selber:
Code:
pGraphics.drawString(name, (int) (xPosition + 2 * radius + 5), (int) (yPosition + 2 * radius));

Schade, dass es da nicht eine einfache Methode gibt...:(
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Grösse eines JTables ändern AWT, Swing, JavaFX & SWT 2
H Grösse eines JFrames ändern AWT, Swing, JavaFX & SWT 7
P JFrame manuell Grösse verändern durch 'mouseDragged' AWT, Swing, JavaFX & SWT 3
C Swing Fensterresize durch doppelklick - wie die neue Grösse erhalten? AWT, Swing, JavaFX & SWT 3
P Swing JScrollPane-Inhalt: Grösse anpassen AWT, Swing, JavaFX & SWT 6
A Grösse des Frames stimmt nicht von Anfang an AWT, Swing, JavaFX & SWT 6
F Im BorderLayout eine feste Grösse zuweisen! AWT, Swing, JavaFX & SWT 9
S ImageIcon Grösse anpassen AWT, Swing, JavaFX & SWT 2
B rote Umrahmung eine Buttons konst. Grösse AWT, Swing, JavaFX & SWT 3
hdi Swing JLabel - Grösse passt sich immer Text an AWT, Swing, JavaFX & SWT 17
hdi JPanel setPreferredSize < als tatsächliche Grösse AWT, Swing, JavaFX & SWT 2
M JPanel in JPanel: grösse des inneren begrenzt durch äusseres AWT, Swing, JavaFX & SWT 4
S Frame grösse automatisch anpassen? AWT, Swing, JavaFX & SWT 1
J InternalFrames Grösse Position AWT, Swing, JavaFX & SWT 3
T Grösse einer JEditorPane ändern AWT, Swing, JavaFX & SWT 5
A Swing JFrame / JPanel Grösse soll sich nach Inhalt richten. AWT, Swing, JavaFX & SWT 2
lin ?JDialog?-nur best. Grösse und Position AWT, Swing, JavaFX & SWT 2
R Bild grösse lesen. AWT, Swing, JavaFX & SWT 2
F SWT Image: Grösse des Bildes zur Laufzeit ändern AWT, Swing, JavaFX & SWT 2
D welche Methode wird beim verstellen der Grösse aufgerufen AWT, Swing, JavaFX & SWT 5
J jframe minimale grösse festlegen AWT, Swing, JavaFX & SWT 5
W JButton grösse bestimmen AWT, Swing, JavaFX & SWT 2
jojoge wie kann ich in eine Benennung eines JButtons eine Variable einbauen? AWT, Swing, JavaFX & SWT 6
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
I Einbindung eines jpg/png/icons in eine GUI AWT, Swing, JavaFX & SWT 1
Splayfer Umrandung eines AttributedStrings AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
Jose05 zugreifen auf ein Objekt eines GridPanes AWT, Swing, JavaFX & SWT 0
melaniemueller Verschiebung eines Fensters über Button AWT, Swing, JavaFX & SWT 27
news2swen automatisches erstellen eines Languagefiles AWT, Swing, JavaFX & SWT 1
B Stylen eines JTextPane funktioniert nicht AWT, Swing, JavaFX & SWT 1
MiMa Schliessen eines FXML Fensters? AWT, Swing, JavaFX & SWT 10
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
L AWT Ändern der Farbe eines BufferedImage mit Farbähnlichkeit AWT, Swing, JavaFX & SWT 5
B veränderte Größe eines Panels im Vorhinein wissen? AWT, Swing, JavaFX & SWT 1
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
L JavaFX Validierung eines Spinner AWT, Swing, JavaFX & SWT 1
M Builden eines lauffähigen JAR Files AWT, Swing, JavaFX & SWT 3
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
M JavaFX rotieren eines Kreises mit konstanter Geschwindigkeit AWT, Swing, JavaFX & SWT 1
K JavaFX Allgemeine Fragen zu dem Aufbau eines Programms hinsichtlich der Klassen AWT, Swing, JavaFX & SWT 1
M JavaFX Auf ein UI Elemement eines anderen Controllers zugreifen AWT, Swing, JavaFX & SWT 0
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
Tronert JavaFX Linienstärke eines Separators ändern? AWT, Swing, JavaFX & SWT 3
N JavaFX Group: Gezieltes entfernen eines Objects (Rectangle) AWT, Swing, JavaFX & SWT 0
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Drag and Drop eines Buttons AWT, Swing, JavaFX & SWT 0
M NullPointerException bei Übergabe eines RadioButtons AWT, Swing, JavaFX & SWT 11
DaCrazyJavaExpert Swing Extern den Text eines nicht fetsgelegten Buttons bekommen. AWT, Swing, JavaFX & SWT 12
J JavaFX Rectangle innerhalb eines Rectangle oder Panes positionieren? AWT, Swing, JavaFX & SWT 1
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
J linken Bildausschnitt eines BufferedImage abschneiden AWT, Swing, JavaFX & SWT 4
J bestimmten Bereich eines JPanels drucken AWT, Swing, JavaFX & SWT 2
D LookAndFeel Überschreiben eines UIDelegate AWT, Swing, JavaFX & SWT 0
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
C Zeichen eines 6 -Eckes AWT, Swing, JavaFX & SWT 1
U JavaFX Wechsel der Scene nach betätigen eines Button AWT, Swing, JavaFX & SWT 2
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JavaFX TreeItem: Icon am Ende eines Eintrags anhängen AWT, Swing, JavaFX & SWT 2
D TAB Taste innerhalb eines JSpinner AWT, Swing, JavaFX & SWT 2
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
F Swing Rotation eines Bildes mit beliebigen Koordinaten um den Mittelpunkt AWT, Swing, JavaFX & SWT 3
Cromewell JavaFX Nur bestimmten Teil eines Canvas rendern und anzeigen AWT, Swing, JavaFX & SWT 2
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1
D Frame beim starten eines anderen Frames schließen AWT, Swing, JavaFX & SWT 2
R Hilfe beim ändern des Hintergrundes eines JFrames AWT, Swing, JavaFX & SWT 9
T Durch klicken eines Buttons Klasse wechseln AWT, Swing, JavaFX & SWT 2
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
J Swing Vertikales Zeichnen eines Strings mit Java2D AWT, Swing, JavaFX & SWT 1
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
V JavaFX Teile eines Images Transparent machen AWT, Swing, JavaFX & SWT 4
I JavaFX Langes drücken eines Buttons AWT, Swing, JavaFX & SWT 4
B Swing Wie Witdh und Height eines GuiElements bekommen AWT, Swing, JavaFX & SWT 5
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
M Swing JPanel innerhalb eines Frames verschieben AWT, Swing, JavaFX & SWT 3
J JavaFX Zugriff auf FXML-Variablen eines anderen Controllers AWT, Swing, JavaFX & SWT 2
K Swing Inhalt eines JPanels lesen AWT, Swing, JavaFX & SWT 3
T Nur bestimmte Bereiche eines Fotos bearbeiten AWT, Swing, JavaFX & SWT 0
J Swing Erstellung eines User Interface AWT, Swing, JavaFX & SWT 2
S JavaFX Teil eines Bildes ausschneiden / als neues Bild nutzen AWT, Swing, JavaFX & SWT 8
R Swing Bewegung eines Graphics Objektes innerhalb eines JPanels funktioniert nicht richtig AWT, Swing, JavaFX & SWT 2
O Swing Aufbau eines JFrames AWT, Swing, JavaFX & SWT 2
A JavaFX Hilfe beim Design eines Quiz AWT, Swing, JavaFX & SWT 2
F Instanzierung einer inneren Klasse in Klasse eines anderen Packets AWT, Swing, JavaFX & SWT 3
A befüllen eines JTables mittels Methode AWT, Swing, JavaFX & SWT 10
javampir Swing Wanderung eines JFrames AWT, Swing, JavaFX & SWT 7
J Anfänger GUI Problem bei der Ausführung eines sehr einfachen Programms AWT, Swing, JavaFX & SWT 2
G Swing ComboBox: Auswahl eines Items der Liste durch Eingabe eines Buchstabens AWT, Swing, JavaFX & SWT 3
S Swing Nur den sichtbaren Bereich eines TextPane mit Inhalt darstellem AWT, Swing, JavaFX & SWT 0
I Erstellung eines kleinen Programmes AWT, Swing, JavaFX & SWT 8
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Windows Blue-Screen nach anzeigen eines Bildes in Java AWT, Swing, JavaFX & SWT 10
T Swing Einzelne Teile eines Textes färben? AWT, Swing, JavaFX & SWT 10
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
HaukeG JavaFX JavaFX Resize und DragAndDrop eines Pane AWT, Swing, JavaFX & SWT 4
D 2D-Grafik Inhalt eines Graphics in anderes Graphics zeichnen.... AWT, Swing, JavaFX & SWT 3
J Denkfehler bei Aktualisierung eines GUI AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben