[Java] JPanel - keine Positionierung

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Flo
Beiträge: 2
Registriert: 17.01.2013, 12:24

[Java] JPanel - keine Positionierung

Beitrag von Flo »

Hey!

Bin neu, hoffe einfach mal das ich hier nicht der einzige Java-Mensch und richtig bin :)

Ich bin grad dabei eine einfache Anwendung zu schreiben. Hauptziel war erstmal das "rumziehen" von einem JPanel und die interaktion etc. auf einem JScrollpane, und das "dynamische" hinzufügen von dem JPanel an verschiedene coordinaten des JScrollpane's.
Das ganze ist so aufgebaut:

Ein JScrollPane in in einem JFrame. (extra Klasse)
MainKlasse->Mein Methode (zum initialisieren etc.)
und dann noch ein

Code: Alles auswählen

public class Element extends JPanel implements MouseListener, MouseMotionListener
Das Element hat seine eigene Unterklasse preferences in denen alle Eigenschaften wie x,y,width usw. gespeichert werden und abgerufen werden können.
Wenn das Element bewegt wird (also via MouseDragging) wird der MouseMotionListener, der sich auch in der Klasse Element befindet angesprochen und ändert einfach in den preferences die x und y-coordinaten (als Point). Daraufhin wird repaint aufrerufen, die dann den rest erledigt:

Code: Alles auswählen

@Override
public void paintComponent( Graphics g ){
    ...
    setLocation(propertys.bounds.getPosition());
    setPreferredSize(propertys.bounds.getSize());
    System.out.println("X: "+propertys.bounds.getPosition().x+" Y: "+propertys.bounds.getPosition().y);
}
ist noch einiges mehr drinn, währe zu lang. Wenn ich das ganze Panel rumziehe klappt das auch ganz gut (also an sich scheint die Methode okay zu sein), wenn ich jetzt beim initialisieren des Elements aber x- und y-coordinaten setze (auf die gleiche weise wie beim "rumziehen"), dann bleibt es da wo es ist (zumindest auf dem Bildschirm).

Code: Alles auswählen

    public Element(Point startPos) {
        super();
        propertys = new Propertys("test.jpg", Color.BLACK, Color.RED, getGraphics()); //ist nur die anfängliche "befüllung" der propertys hat nichts zu sagen
        
        this.addMouseListener(this);
        this.addMouseMotionListener(this);
        
        this.setLayout(new BorderLayout());
        
        this.propertys.bounds.setBounds(new Rectangle(startPos, new Dimension(200, 200))); //vllt. ein bisschen ungünstig gelöst, sollte aber eig. funktionieren
        this.repaint(); //nur zum testen damit er es auch wirklich nochmal neu "zeichnet"
    }
Ich kann es dann auch nicht mehr rumziehen wenn ich draufklicke, es ist als würde es an der stelle nicht sein. Wenn ich mit der maus zu den coordinaten fahre wo es sein "sollte" kann iches aber rumziehen (nicht grafisch - merke ich nur an meinen ausgaben (siehe oben).


Edit: Code der beim "dragging" aufgerufen wird:

Code: Alles auswählen

    @Override
    public void mouseDragged(MouseEvent e) {
        int x = e.getXOnScreen()-10; //aktuelle maus-position herausfinden
        int y = e.getYOnScreen()-50;
        
        //dragg only when mouse is on "drag-panel"
        if(x-this.getLocation().x < 35 && y-this.getLocation().y < 35 && x-this.getLocation().x >= -35 && y-this.getLocation().y >= -35) { //es gibt ein kleines "dragg-panel am oberen linken rand des panels... Nur wenn sich die maus über diesem befindet soll sich das panel bewegen lassen (funktioniert)
            propertys.bounds.setPosition(new Point(x, y));
            this.repaint();
        }
    }
Ich hoffe das war jetzt nicht zu verwirrend.. :) Und ich hoffe Ihr könnt mir helfen das sich das panel gleich vom Anfang an richtig positioniert,
Grüße Flo
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4286
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Java] JPanel - keine Positionierung

Beitrag von Chromanoid »

Flo
Beiträge: 2
Registriert: 17.01.2013, 12:24

Re: [Java] JPanel - keine Positionierung

Beitrag von Flo »

Danke für den Versuch, hat leider nicht geholfen, das hatte ich schon ausprobiert :(

Sonst weiß auch keiner worans liegen kann oder? Das Problem besteht immernoch..
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4286
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Java] JPanel - keine Positionierung

Beitrag von Chromanoid »

Kannst Du das ganze vielleicht mal auf ein minimal ausführbares Beispiel runterbrechen. Dann kann ich es mal direkt ausprobieren. Das ist ein recht spezieller Anwendungsfall, vielleicht wärst Du mit einem eigenen LayoutManager ganz gut beraten.
Antworten