Markieren mit Rectangle ?

Status
Nicht offen für weitere Antworten.

Duster

Aktives Mitglied
Abend,

Mal eine kleine Frage:

Also ich möchte ein Rechteck erstellen, wobei man aber vorm anlegen sehen kann wie groß das Rechteck wird , so wie
wenn man Ordner markiert, da hat man ja auch immer so ein Hilfsrechteck!
 
B

Beni

Gast
Und die Frage ist? Rechtecke kannst du mit "Graphics#draw/fillRectangle" zeichnen. Mit einem Mouse/MouseMotionListener kannst du auch rausfinden, wo die Maus sich aufhält.
 

Duster

Aktives Mitglied
Ja das habe ich schon alles gemacht, aber das Problem ist, wenn ich das Rechteck mit gedrückter Maustaste aufziehe (von x=100;y=30 bis x=200;y=35) und dann mit immernoch mit gedrückter Maustaste, die Koordinaten korrigiere(auf x=150;y=33),dann sieht man immernoch die differenz von den beiden Rechtecken, wie mache ich das, das ich das Rechteck sehe, welches ich gerade aufziehe??? (vorwärts wie rückwärts)
 

André Uhres

Top Contributor
Ich hab ein Problem mir das bildhaft vorzustellen:
Was bedeutet "Rechteck aufziehen" und "die Differenz der beiden Rechtecke"?
 

dieta

Top Contributor
Ich glaube, er meint, dass er das Rechteck zeichnet, und vor dem Zeichnen des nächsten Rechtecks, das alte nicht mehr "löscht".
 

Duster

Aktives Mitglied
Ich meine, das ich ein Rechteck zur Laufzeit zeichnen kann, welches die größe des später angezeigten Rechteckes simuliert.
 

André Uhres

Top Contributor
Ich sag's mal wie ich es jetzt versteh:

Mit "aufziehen" meinst du, daß du bei mousePressed einen Eckpunkt des Rechtecks fixierst
und dann bei mouseDragged die diagonal gegenüber liegende Ecke des Rechtecks "ziehst",
so daß das Rechteck ständig seine Form, Grösse und Ausrichtung ändert.
Mit Ausrichtung meine ich, daß der zweite Eckpunkt nach rechts/links/oben/unten von der ersten Ecke
gezogen werden kann. Bei mouseReleased ist der Vorgang beendet
und das Rechteck hat dann sein endgültiges Aussehen.

Ist das so gemeint oder hab ich etwas übersehen / vergessen / falsch verstanden?
 

dieta

Top Contributor
Meinst du so was (hab ich mal "aus Spass" programmiert, habs jetzt nur noch so erweitert, dass er sich alle zuvor gezeichneten Rechtecke "merkt"):
Code:
public class ZiehPanel extends JPanel
{
	
	private int x1 = 0;
	private int y1 = 0;
	private int x2 = 0;
	private int y2 = 0;
	
	private boolean isDragging = false;
	
	private Color dragFillColor = new Color(255, 255, 160, 128);
	private Color dragBorderColor = new Color(0, 0, 0, 128);
	
	private JFrame parent;
	
	private Vector rects = new Vector(1, 1);
	
	public ZiehPanel(JFrame f)
	{
		parent = f;
		setOpaque(false);
		addMouseListener(new MouseAdapter()
		{
			public void mousePressed(MouseEvent evt)
			{
				isDragging = true;
				
				x1 = evt.getX();
				y1 = evt.getY();
				x2 = evt.getX();
				y2 = evt.getY();
				
				repaint();
			}
			
			public void mouseReleased(MouseEvent evt)
			{
				isDragging = false;
				
				rects.add(new Rectangle(x1 > x2 ? x2 : x1, y1 > y2 ? y2 : y1, x1 > x2 ? x1 - x2 :  x2 - x1, y1 > y2 ? y1 - y2 :  y2 - y1));
				
				x1 = 0;
				y1 = 0;
				x2 = 0;
				y2 = 0;
				
				repaint();
			}
		});
		addMouseMotionListener(new MouseMotionAdapter()
		{
			public void mouseDragged(MouseEvent evt)
			{
				x2 = evt.getX();
				y2 = evt.getY();
				repaint();
			}
		});
	}
	
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		for(int i = 0; i < rects.size(); i++)
		{
			g.setColor(dragFillColor);
			Rectangle r = (Rectangle)rects.get(i);
			g.fillRect(r.x, r.y, r.width, r.height);
			g.setColor(dragBorderColor);
			g.drawRect(r.x, r.y, r.width, r.height);
		}
		g.setColor(dragFillColor);
		g.fillRect(x1 > x2 ? x2 : x1, y1 > y2 ? y2 : y1, x1 > x2 ? x1 - x2 :  x2 - x1, y1 > y2 ? y1 - y2 :  y2 - y1);
		g.setColor(dragBorderColor);
		g.drawRect(x1 > x2 ? x2 : x1, y1 > y2 ? y2 : y1, x1 > x2 ? x1 - x2 :  x2 - x1, y1 > y2 ? y1 - y2 :  y2 - y1);
	}
	
}

Damit kann man auch coole Effekte bekommen, wenn man z.B.
Code:
dragFillColor = new Color(((int)(Math.random() * 255)), ((int)(Math.random() * 255)), ((int)(Math.random() * 255)), 128);
am Anfang der PaintComponent-Methode oder in der For-Schleife in der Paint-Component-Methode einfügt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JavaFX TableView nur erste Zeile editable machen und gelb markieren AWT, Swing, JavaFX & SWT 0
A Mit JavaFX einzelne Zeilen in TableView farbig markieren AWT, Swing, JavaFX & SWT 5
F Zeile in mehreren Jtables bei Selektion markieren AWT, Swing, JavaFX & SWT 11
P JavaFX TableView Zelle markieren AWT, Swing, JavaFX & SWT 3
J SWT Textfeld markieren und kopieren AWT, Swing, JavaFX & SWT 0
B JavaFX TableView eine Zeile markieren AWT, Swing, JavaFX & SWT 5
Thallius Swing Warum kann man Texte im Panel nicht markieren? AWT, Swing, JavaFX & SWT 1
D Swing JTextComponent markieren bei Änderungen AWT, Swing, JavaFX & SWT 5
P Swing JTable mehrere Zeilen markieren AWT, Swing, JavaFX & SWT 1
D Swing Mit TableCellRenderer einzelne Zellen markieren AWT, Swing, JavaFX & SWT 3
M Beim Start von TableEditor Inhalt der Zelle markieren. AWT, Swing, JavaFX & SWT 2
reibi SWT Teilbereich eines Images markieren AWT, Swing, JavaFX & SWT 7
J Swing JTable: Komplette Zeile aber ohne Spalten markieren AWT, Swing, JavaFX & SWT 11
L SWT tree elemente markieren AWT, Swing, JavaFX & SWT 4
A JTable Zelle markieren von bis und Löschen AWT, Swing, JavaFX & SWT 6
C Swing gleiche Einträge in JTable farblich markieren AWT, Swing, JavaFX & SWT 5
Haave Swing Text markieren nach Tabdruck AWT, Swing, JavaFX & SWT 3
D TreeNode farbig markieren AWT, Swing, JavaFX & SWT 2
K JFileChooser mehrere Dateien markieren ohne STRG AWT, Swing, JavaFX & SWT 4
M Markieren von ganzen Zeilen in transparenten Tabellen AWT, Swing, JavaFX & SWT 6
J SWT CCombo Text markieren AWT, Swing, JavaFX & SWT 2
O JCalendar - Tage markieren AWT, Swing, JavaFX & SWT 2
E Zelle in JTable nach klick markieren AWT, Swing, JavaFX & SWT 2
B Swing JTable: mehrere Zeilen markieren AWT, Swing, JavaFX & SWT 3
H Zeich in einem TextField farblich markieren?! AWT, Swing, JavaFX & SWT 5
P DragAndDrop aus JTable ohne vorheriges markieren AWT, Swing, JavaFX & SWT 8
A JXMonthView --> Tage markieren (flaggen) AWT, Swing, JavaFX & SWT 2
G Ganzen Text im Taxtfield markieren AWT, Swing, JavaFX & SWT 3
T [SWT] TreeItem als selektiert markieren AWT, Swing, JavaFX & SWT 2
G JTextfield Inhalt markieren bei Auswahl AWT, Swing, JavaFX & SWT 2
S Welcher Listener ? In JTable mehrere Zeilen markieren & AWT, Swing, JavaFX & SWT 2
G JTextArea u. Wörter darin markieren AWT, Swing, JavaFX & SWT 3
W Zellen Inhalt beim editieren markieren AWT, Swing, JavaFX & SWT 2
V Bei Tab, Zahlen im jTextField markieren. AWT, Swing, JavaFX & SWT 2
A Zellen in JTable auf Klick kurz markieren auf Klick AWT, Swing, JavaFX & SWT 2
W JTree, bei Drag Over über den Knoten "markieren" AWT, Swing, JavaFX & SWT 3
P markieren & kontextmeü mit rechtsklick AWT, Swing, JavaFX & SWT 3
A JFileChooser - Mehrere Dateien per Maus markieren (nokeys) AWT, Swing, JavaFX & SWT 7
G JTable-Zeile/Zelle markieren und mir Shortcut in Arbeitsspei AWT, Swing, JavaFX & SWT 3
A JTable, mehrere Zellen markieren AWT, Swing, JavaFX & SWT 3
TheJavaKid AWT-Button markieren AWT, Swing, JavaFX & SWT 3
C JTable -> Rechtsklick -> Zeile markieren AWT, Swing, JavaFX & SWT 5
L Ganze Zeile markieren AWT, Swing, JavaFX & SWT 6
N JTable Ganze Zeile markieren AWT, Swing, JavaFX & SWT 8
G TableCellRenderer soll ganze ausgewählte Zeile markieren AWT, Swing, JavaFX & SWT 2
D Jtable farbig markieren - Verständnis Problem AWT, Swing, JavaFX & SWT 5
W Element im JTree farblich markieren AWT, Swing, JavaFX & SWT 6
L JTextField: Kompletten Text bei Selektion markieren AWT, Swing, JavaFX & SWT 5
R JTable Zellen markieren AWT, Swing, JavaFX & SWT 3
B JList Zeilen in verschiedenen Farben markieren. AWT, Swing, JavaFX & SWT 3
T Bildausschnitte markieren AWT, Swing, JavaFX & SWT 14
I einzelne Zellen bei JTable markieren AWT, Swing, JavaFX & SWT 3
N JTable - Problem mit markieren von Zellen AWT, Swing, JavaFX & SWT 3
G Text markieren -> Hyperlink erstellen AWT, Swing, JavaFX & SWT 2
P Inhalt von JTextField beim Auswählen markieren AWT, Swing, JavaFX & SWT 7
G auch mit rechter Maustaste in einer Tabelle markieren? AWT, Swing, JavaFX & SWT 3
U Was genau bewirkt Rectangle in 2dGraphics? AWT, Swing, JavaFX & SWT 1
R AWT Rectangle mit Angle AWT, Swing, JavaFX & SWT 10
K 2048 Umsetzung mit Gridpane / Stackpane und / Rectangle AWT, Swing, JavaFX & SWT 0
N JavaFX Group: Gezieltes entfernen eines Objects (Rectangle) AWT, Swing, JavaFX & SWT 0
J JavaFX Rectangle innerhalb eines Rectangle oder Panes positionieren? AWT, Swing, JavaFX & SWT 1
U JavaFX GridPane - Circle auf Rectangle versetzten AWT, Swing, JavaFX & SWT 1
G Rectangle Breite richtet such an die Breite vom Text AWT, Swing, JavaFX & SWT 1
L JavaFX Rectangle mit Dock-Mechanismus AWT, Swing, JavaFX & SWT 3
K JavaFX TableView mit Rectangle AWT, Swing, JavaFX & SWT 3
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
T Rectangle Transparent und darunter liegende Objekte Bedienbar AWT, Swing, JavaFX & SWT 0
J Rectangle g.fillRec() X/Y Punkt AWT, Swing, JavaFX & SWT 5
TheSorm Rectangle drehen AWT, Swing, JavaFX & SWT 9
S Rectangle Border Color AWT, Swing, JavaFX & SWT 13
P drawString in einem Rectangle AWT, Swing, JavaFX & SWT 4
P Rectangle verschieben AWT, Swing, JavaFX & SWT 11
P ImageIcon auf Rectangle AWT, Swing, JavaFX & SWT 3
P Rectangle on JPanel zentrieren AWT, Swing, JavaFX & SWT 20
O 2D-Grafik Rectangle mit double Werten zeichnen AWT, Swing, JavaFX & SWT 3
T Rectangle Namen geben? Alternativen auch gerne gesehen. AWT, Swing, JavaFX & SWT 2
D 2D-Grafik Form der GrafikObjekte ändern, Ellipse -> Rectangle AWT, Swing, JavaFX & SWT 2
K AWT Rectangle klappt nicht AWT, Swing, JavaFX & SWT 7
R Resize Rectangle Problem AWT, Swing, JavaFX & SWT 3
Schandro Den größten passenden java.awt.Font zu einem Rectangle berechnen AWT, Swing, JavaFX & SWT 2
I Text innerhalb von Rectangle rendern AWT, Swing, JavaFX & SWT 3
H Rectangle[] ? AWT, Swing, JavaFX & SWT 5
I Rectangle mit floating values AWT, Swing, JavaFX & SWT 2
T PLAF MetalButtonUI Rectangle beseitigen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben