Maus Rahmen zeichnen

Status
Nicht offen für weitere Antworten.

WieselAc

Top Contributor
Hallo,

ich bin gerade auf der suche nach einer Möglichkeit mit der Maus einen Rahmen über diverse Komponenten zu zeichnen. Das bedeutet ich habe ein JPanel auf dem einige Componenten eingefügt sind. Jetzt möchste ich auf einer Stelle einen rechte Klick machen, die Maus gedrückt halten und auf eine Andere Position ziehen.Dabei soll die Maus einen Rahmen zeichnen. Ich hoffe das ist eigigermassen verständlich. Mit einem MouseListener etc hab ich mir schon ein Gerüst gebaut den Start Punkt, den jeweils aktuellen während der Bewgung und den Endpunkt zu holen. Jetzt weiß ich aber nicht genau wie ich quasi über die Komponenten auf dem Panel malen kann. Hat da einer eine Idee? Ich bin schon auf das Stichwort Glasspanel gestoßen aber bin mir nicht ganz sicher ob und wie ich das hier anwenden kann. Bei Bedarf bau ich auch gerne ein kleines lauffähiges Beispiel zusammen.

viele Grüße
 

Azrahel

Bekanntes Mitglied
Vllt gibts sowas ja schon als Componente, das weiss ich jetzt nicht auswendig, aber versuch mal mit dem GraphicsObject oder Graphics2d ein rechteck zu zeichnen. Ich weiss jetzt nicht genau ob man das nur als Rahmen zeichnen kann, ansonsten kannste versuchen das ganze mit drawLine zu machen.

Ob du allerdings einfach so reinzeichnen kannst weiss ich nicht, aber ich denke das du auf dem Panel wo schon deine Componenten liegen auch zeichnen kannst.

irgendwo hab ich hier im Forum aber glaube ich mal gesehen das man auf die GlassPane auch ein Panel packen kann, das kann ja dann opaque(true/false) (weiss jetzt nicht genau was gesetzt sein muss damit es durchsichtig ist), und auf dem Panel müssteste dann normal zeichnen können. Das wär zumindest der Ansatz der mir als erstes durch den kopf geht. oder du benutzt das Panel selbst mit ner gesetzten Border als Rahmen, und nutzt beim Rahmen ziehen einfach setBounds().
 

WieselAc

Top Contributor
Beim Bau des Beispiels hab ich doch tatsälich eine teilweise funktionierende Lösung gebaut :)



Code:
package puzzel;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Rahmen extends JPanel implements MouseListener,
        MouseMotionListener {

    private static final long serialVersionUID = 1L;
    private Point start, current;
    private boolean move;

    public Rahmen() {
        move = false;
        setLayout(new GridLayout(3, 4));
        addMouseListener(this);
        addMouseMotionListener(this);
        for (int i = 0; i < 3 * 4; i++) {
            addColorPanel(i);
        }
    }

    private void addColorPanel(int i) {
        JPanel p = new JPanel();
        p.setPreferredSize(new Dimension(30, 30));
        p.setBackground(new Color(i * i, 255 - i * 10, i * 10));
        add(p);
    }

    public void mouseClicked(MouseEvent event) {
    }

    public void mousePressed(MouseEvent event) {
        if (event.isMetaDown()) {
            start = event.getPoint();
        }
    }

    public void mouseReleased(MouseEvent event) {
        if (event.isMetaDown()) {
            move = false;
            repaint();
        }
    }

    public void mouseEntered(MouseEvent event) {
    }

    public void mouseExited(MouseEvent event) {
    }

    public void mouseDragged(MouseEvent event) {
        if (event.isMetaDown()) {
            move = true;
            current = event.getPoint();
            repaint();
        }
    }

    public void paint(Graphics g) {
        super.paint(g);
        g.setColor(Color.BLACK);
        if (move) {
            int x = start.x < current.x ? start.x : current.x;
            int y = start.y < current.y ? start.y : current.y;

            g.drawRect(x, y, Math.abs(current.x - start.x), Math.abs(current.y
                    - start.y));
        }
    }

    public void mouseMoved(MouseEvent event) {
    }

    private static void createAndShowGUI() {

        JFrame frame = new JFrame("Rahmen");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Rahmen rahmenPanel = new Rahmen();
        frame.getContentPane().add(rahmenPanel);

        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

}
 

WieselAc

Top Contributor
Hmmmmmmm OK, dann werd ich NIEEEEE wieder was sagen :D

Konnnt ja nicht ahnen , das es so funktioniert.

Aber daraus schließe ich: Die Hälfte der Fragen hier würden sich sofort erledigen, wenn man die Leute zwingen würde ein Beispiel zu bauen.

PS: Hab den Code jetzt so korregiert das es geht. Falls jedoch jemand noch eine Bessere Idee hat ruhig posten, deshalb erstmal kein Haken.
 

Azrahel

Bekanntes Mitglied
WieselAc hat gesagt.:
Hmmmmmmm OK, dann werd ich NIEEEEE wieder was sagen :D

Soooo war das jetzt auch nicht gemeint :)


WieselAc hat gesagt.:
Aber daraus schließe ich: Die Hälfte der Fragen hier würden sich sofort erledigen, wenn man die Leute zwingen würde ein Beispiel zu bauen.
Das ist wohl so, und ich glaube deswegen hat Andre Uhres das auch in seine Signatur geschrieben :D
 

Leroy42

Top Contributor
Azrahel hat gesagt.:
WieselAc hat gesagt.:
Aber daraus schließe ich: Die Hälfte der Fragen hier würden sich sofort erledigen, wenn man die Leute zwingen würde ein Beispiel zu bauen.
Das ist wohl so, und ich glaube deswegen hat Andre Uhres das auch in seine Signatur geschrieben :D

Wobei ich sogar glaube, daß ihr mit der Hälfte der Fragen weit untertreibt. :wink:
 

Azrahel

Bekanntes Mitglied
Da könntest du echt recht haben. grad bei der Fehlersuche kommen die Jungs echt gleich bei jedem Pienz gerannt, statt selber mal das Hirn anzustrengen.

[edit]das ging jetzt nicht gegen dich WieselAc[/edit]
 

WieselAc

Top Contributor
jaja schon klar was du meinst *heul schlurz wein*


Aber zurück zum Thema, fällt jemanden "auf die Schnelle" ein, wie ich mir da jetzt array ne Liste oder sonst was mit allen "selektierten" (also eingerahmten) Komponenten bestimmen lassen kann, nachdem die Maus losgelassen wurde.


Werd natürlich selber auch weiter dran arbeiten, aber erst heute Abend, muss jetzt mal kurz weg.
 

Azrahel

Bekanntes Mitglied
Ja, nur ist meine Idee glaub ich etwas umständlich.

lass dir ne Liste aller Elemente auf deinem Panel geben (get glaub ich mit getComponents()), frag von denen die Position ab (das was man mit setBounds setzen würd muss man ja auch irgendwie rausbekommen können) und vergleich das mit deinem rahmen. Dabei kannst du z.b. auch festlegen ob es reicht das ein object angeschnitten wird um es zu markieren oder so :D

Hee, die Idee gefällt mir sogar, ich glaub die merk ich mir mal grad :cool:
 
G

Gast

Gast
Super Idee hab schonmal auf die schnelle was damit rumprobiert, genau das ist es. ich hol mir die rectanagle aller Componenten und gucke dann welche das von der Maus gezeichnete Rechteck schneiden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Linie mit der Maus auswählen AWT, Swing, JavaFX & SWT 5
B mit maus Objekt bewegen AWT, Swing, JavaFX & SWT 3
R Swing Panel nur bei Maus sichtbar AWT, Swing, JavaFX & SWT 2
B mit Maus verschiebbares Panel AWT, Swing, JavaFX & SWT 2
C JTextField Inhalt mit Maus selektieren wenn disabled AWT, Swing, JavaFX & SWT 2
S JavaFX Fenster aufkommen lassen, wenn mit der Maus über bestimmten Bereich fahren AWT, Swing, JavaFX & SWT 1
F Event wenn Maus eine JList verlässt AWT, Swing, JavaFX & SWT 13
T Timer und GIF Animationen pausieren während Maus sich bewegt AWT, Swing, JavaFX & SWT 4
M Bild in JPanel mit Maus einfügen AWT, Swing, JavaFX & SWT 0
B Swing Form undecorated: Beim Bewegen geht die Maus immer automatisch zur linken Seite. AWT, Swing, JavaFX & SWT 7
L 2D-Grafik Bild in Richtung Maus drehen AWT, Swing, JavaFX & SWT 18
K Swing Maus in Panel einsperren AWT, Swing, JavaFX & SWT 8
D Swing JList keine Selektionsänderung bei "dragged-Maus" AWT, Swing, JavaFX & SWT 4
A JFrame Größenänderung mit Maus und GridLayout AWT, Swing, JavaFX & SWT 10
J Maus "locken" für Menü AWT, Swing, JavaFX & SWT 8
D Grafiken an Maus anhängen AWT, Swing, JavaFX & SWT 2
P Pfeilpolygon per Maus rotierbar machen - Kleine Schwierigkeiten AWT, Swing, JavaFX & SWT 29
P Event Handling Gedrückte Maus Blockiert MausEvents AWT, Swing, JavaFX & SWT 2
R Swing Per Maus JLabel resizen AWT, Swing, JavaFX & SWT 6
F Maus von alleine bewegen! AWT, Swing, JavaFX & SWT 8
G Swing JPanel per Maus verschieben AWT, Swing, JavaFX & SWT 5
A SWT Tooltip soll nicht verschwinden, solange User mit Maus auf Control ist AWT, Swing, JavaFX & SWT 5
C AWT Mausbarriere Maus fangen AWT, Swing, JavaFX & SWT 10
J "Auswahlfenster" mit Maus auf JLabel zeichnen AWT, Swing, JavaFX & SWT 4
W Swing Bild zeichnen wenn Maus an bestimmter Position ist AWT, Swing, JavaFX & SWT 4
J Inaktivität von Maus und Tastatur AWT, Swing, JavaFX & SWT 4
G AWT Images aus Imagearray an die Maus pappen und bewegen AWT, Swing, JavaFX & SWT 4
F Element anzeigen / erstellen. Maus vs Controller AWT, Swing, JavaFX & SWT 7
M 3D-Grafik Bewegung mit der Maus ohne Klicken AWT, Swing, JavaFX & SWT 10
F Swing Objekte mit Maus verschieben AWT, Swing, JavaFX & SWT 8
O Swing JButton werden richtig gewechselt aber die Maus macht die alten wieder Sichtbar?? AWT, Swing, JavaFX & SWT 5
Y AWT Maus Koordinaten abspeichern in eine Textfile AWT, Swing, JavaFX & SWT 3
Weltall 7 AWT Maus-Events werden doppelt ausgeführt AWT, Swing, JavaFX & SWT 12
C permanente aktualisierung der Koordinaten der Maus auf einem Panel AWT, Swing, JavaFX & SWT 8
J maus festlegen AWT, Swing, JavaFX & SWT 6
C paintComponent mit Maus verschieben - wie? AWT, Swing, JavaFX & SWT 2
T Swing JComboBox: Listeneinträge mit der Maus verschieben AWT, Swing, JavaFX & SWT 5
O JSlider - wie unterscheide ich mit Maus verändert und durch setValue verändert. AWT, Swing, JavaFX & SWT 16
W Swing Maus Rastersprung AWT, Swing, JavaFX & SWT 3
S Swing JTable Auswahl mehrerer Zellen mit STRG+Maus AWT, Swing, JavaFX & SWT 3
E Hilfetext anzeigen beim Überfahren mit der Maus AWT, Swing, JavaFX & SWT 3
G Maus über Button AWT, Swing, JavaFX & SWT 3
S Funktion nur ausführen, wenn Maus über Componente ist AWT, Swing, JavaFX & SWT 2
G Listenelemente mit der Maus verschieben AWT, Swing, JavaFX & SWT 4
B kein MouseEvent bei zu schneller Bewegung der Maus AWT, Swing, JavaFX & SWT 7
B JTable - Wechsel der Spalte bei TAB, RETURN oder Maus AWT, Swing, JavaFX & SWT 5
D Mit der Maus in verschiedene Modi wechseln AWT, Swing, JavaFX & SWT 15
Z Buttons erscheinen erst wenn man mit der Maus drüber geht AWT, Swing, JavaFX & SWT 7
G Elemente erst da wenn mit Maus drüber gefahren bin AWT, Swing, JavaFX & SWT 2
M Kreis mit gedrückter Maus bewegen AWT, Swing, JavaFX & SWT 20
F Größenänderung mittels Maus - selbst implementieren? AWT, Swing, JavaFX & SWT 3
R Einstellen der Maus Rad Geschwindigkeit beim Scrollen AWT, Swing, JavaFX & SWT 3
G Kreis zeichnen und mit Maus ziehen AWT, Swing, JavaFX & SWT 3
A JFileChooser - Mehrere Dateien per Maus markieren (nokeys) AWT, Swing, JavaFX & SWT 7
V JTable Handling Fokus on Keystroke und Maus Doubleclick AWT, Swing, JavaFX & SWT 9
R JTable: Maus-Click ohne Datensätze AWT, Swing, JavaFX & SWT 9
L Größe von Komponenten im Nulllayout mit der Maus verändern. AWT, Swing, JavaFX & SWT 2
J Context Menü Maus AWT, Swing, JavaFX & SWT 3
G JTable selektion der Zeile bei Fokusieren mit der Maus AWT, Swing, JavaFX & SWT 5
T mousemoved abfrage - aber welches event wenn maus weg? AWT, Swing, JavaFX & SWT 2
lin Frame bei Drücken eines Buttons mit Maus verschieben AWT, Swing, JavaFX & SWT 7
G [AWT] Zeichnungen per Maus auswählen AWT, Swing, JavaFX & SWT 8
D Ne Maus Event Frage AWT, Swing, JavaFX & SWT 4
D Polygon mit der Maus zeichnen AWT, Swing, JavaFX & SWT 2
M Zusätzlichen Maus-Klick erzeugen AWT, Swing, JavaFX & SWT 4
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
S JavaFX Tab-content-area Rahmen AWT, Swing, JavaFX & SWT 7
B JButton -> Rahmen wegbekommen AWT, Swing, JavaFX & SWT 7
C Jframe ohne Rahmen AWT, Swing, JavaFX & SWT 3
O JTable ohne Rahmen printen AWT, Swing, JavaFX & SWT 3
M JavaFX Ein Bild ohne Rahmen fällt runter? AWT, Swing, JavaFX & SWT 2
F JTextArea hat keinen Rahmen AWT, Swing, JavaFX & SWT 10
S JLabel mit ImageIcon, komischer Rahmen? AWT, Swing, JavaFX & SWT 2
S Swing Automatisch 2px Rahmen in Windows 8 AWT, Swing, JavaFX & SWT 0
R Rahmen von/für DrawRoundRect AWT, Swing, JavaFX & SWT 3
D 2D-Grafik Rechteck befindet sich unter dem Rahmen des JFrame. AWT, Swing, JavaFX & SWT 1
J Rahmen um mehrere GUI Einzelteile AWT, Swing, JavaFX & SWT 2
H Button hat nur farbiger Rahmen AWT, Swing, JavaFX & SWT 3
E Netbeans: Buttons mit Label bzw. Rahmen unterlegen AWT, Swing, JavaFX & SWT 8
R Bewglichen Rahmen über einem Bild AWT, Swing, JavaFX & SWT 3
R paintComponent malt bei repaint() Rahmen um Panel AWT, Swing, JavaFX & SWT 7
P Swing Componente über Rahmen hinaus zeichnen AWT, Swing, JavaFX & SWT 2
B JButton Rahmen ausblenden AWT, Swing, JavaFX & SWT 3
T GUI ohne Rahmen auf Desktop AWT, Swing, JavaFX & SWT 3
M Swing Rahmen innerhalb des JButton entfernen AWT, Swing, JavaFX & SWT 2
F Individueller Frame-Rahmen AWT, Swing, JavaFX & SWT 27
H JFrame Rahmen entfernen AWT, Swing, JavaFX & SWT 1
0 Transparentes Panel ohne Rahmen AWT, Swing, JavaFX & SWT 5
K Swing JDialog ohne Titlebar mit Rahmen AWT, Swing, JavaFX & SWT 5
D Swing JButton will Rahmen nich verlieren AWT, Swing, JavaFX & SWT 14
J JDialog nicht aus JFrame Rahmen ziehen AWT, Swing, JavaFX & SWT 4
S Rahmen um Panel passt sich nicht ans Layout an AWT, Swing, JavaFX & SWT 3
M AWT Component/Canvas erzeugt unerwünschten Rahmen bei paint AWT, Swing, JavaFX & SWT 3
N Fenster ohne Rahmen AWT, Swing, JavaFX & SWT 10
S GridBagLayout mit Rahmen AWT, Swing, JavaFX & SWT 2
J "Halbe" Rahmen und Trennlinien! AWT, Swing, JavaFX & SWT 4
F Rahmen mit gestrichelter Linie zeichnen AWT, Swing, JavaFX & SWT 4
D freier Text / Frame ohne Rahmen AWT, Swing, JavaFX & SWT 5
B Fenster ohne Rahmen AWT, Swing, JavaFX & SWT 2
N Abstand des Textes vom Rahmen bei JLabel AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben