Drag & Drop durch Verbindungslinien

Fartos

Mitglied
Hallo,

ich hab mal eine Frage und zwar, wie kann ich zwischen 2 Elementen mittels Verbindungslinien
miteinander verknüpfen, sodass ein update stattfinden kann.
Die Zwei Elemente sind Attribute aus DB-Tabelle.
Da ich keine Erfahrung mit GUI habe, habe ich mir gedacht, dass ich mit D&D das
lösen kann. Nur wie mache ich es mit den Verbindungslinien?

Könnte mir jemand auf die Sprünge Helfen?

Vg
 

XHelp

Top Contributor
Die Frage ist so allgemein formuilert, dass man da nur "in dem du eine Linie zeichnest" antworten kann.
Was genau machst du denn? Wie stellst du die "Attribute aus DB-Tabelle" dar? Soll es einfach nur von A nach B-Linie sein, oder müssen da ganz abgefahrene Algos dahinter stecken, die die Überschneidungen der Linien verringern?
 

Fartos

Mitglied
danke erstmal für die schnelle Antwort.

Die Idee kommt eigentlich von den DatenmappingsTools wie stylos oder Altova.
D.h wenn ich z.b Att(A) klicke ziehe ich damit eine Linie zur Att(B) dann soll ein Event ausgelöst
werden und im Hintergrund sorgt ein Algorithmus für das update zwischen den beiden Atts.
A und B sind 2 Attribute aus 2 Tabellen in DB.

Übernimmt eigentlich das Linienziehen nicht die Aufgabe des DnD?
 

XHelp

Top Contributor
Mir ist nach wie wo keine Klasse
Code:
JTableAttribute extends JComponent
bekannt. Und warum soll Drag & Drop irgendwas zeichnen? oO
Hast du überhaupt schon irgendwas Code-ähnliches?
 
V

vanny

Gast
wenn ich dich richtig verstehe, dann wirst du wohl die Mausdaten auslesen müssen und zwischen mousePressed und mouseReleased die Linie selbst zeichnen.
Dann schaust du nach, was sich in deiner GUI am Start und am Ende deiner Linie befindet, und startest dann dein was auch immer.

Mit DnD hat das nix zu tun.

Gruß Vanny
 

Fartos

Mitglied
ja ja stimmt @vanny das hat wohl mit DnD nixt zu tun. Jetzt wird es mir langsam klarer, wie ich vorgehen soll. Aber nur mit Eure Hilfe wird es mir gelingen, was ich vorhabe zu implementieren.

Also mit mousePressed fange ich die Linie zu zeichnen bis ich die mouse loslasse. Dabei ermittele ich den beiden Werten bei mousePressed und bei mouseReleased. Diese beiden Werte dienen als Variablen in den Algorithmus, der nach dem Loslassen der mouse starten soll.

Vielleicht könntet ihr mir noch ein paar Vorschläge geben, wie ich das ganze implementieren kann. Ich meine, welche Funktionen in Java, mit denen ich den geklickten Werte ermitteln kann und wie ich ein Event starten kann nach dem ich die Mouse loslasse.

Besten dank im voraus
 

Fartos

Mitglied
Sorry @vanny aber,

ich hab schon in meinem ersten Beitrag geschrieben, dass ich keine Erfahrung auf diesem Gebiet habe.
Einfach irgend ein Code hier rein zu basteln und korrigieren zu lassen würde mir nur sehr wenig helfen.
Am besten hätte ich gern, dass du oder einer der Exp. mir auf paar praktische Hinweise bringt, wie ich z.b ein Event auslösen(Methode zu Daten updaten z.b) kann wenn ich die mouse loslasse und ....... sonst den anderen Weg kann ich selber gehen.

Vg
 
V

vanny

Gast
1. Mainclass:

Java:
import javax.swing.SwingUtilities;

public class StartIt {
	
	public static void main(String[] args) {
		
		SwingUtilities.invokeLater(new Runnable() {
			
			public void run() {
				new HauptFenster();
			}
		});
		
	}

}

2. Dein Frame:

Java:
package gui;

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class HauptFenster extends JFrame{
	
	private JLabel lblPosition;
	
	public HauptFenster(){
		
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setTitle("Maus abfragen...");
		this.setSize((int)(java.awt.Toolkit.getDefaultToolkit().getScreenSize().getWidth()*0.8), (int)(java.awt.Toolkit.getDefaultToolkit().getScreenSize().getHeight()*0.8));
		this.setLocationRelativeTo(null);
		
		lblPosition = new JLabel();
		MausBereich mausBereich = new MausBereich(this);
		
		this.getContentPane().add(BorderLayout.NORTH, lblPosition);
		this.setVisible(true);
	}
	
	public void setLabelText(int x, int y, Color c){
		lblPosition.setForeground(c);
		String text = 	"<html>Mausposition :<br>" +
						"x = <b>" + x + "</b><br>" +
						"y = <b>" + y + "</b><br>" +
						"</html>";
		lblPosition.setText(text);
		repaint();
	}

}

3. Deine Mausfläche incl. Listener:

Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class MausBereich extends JPanel implements MouseMotionListener {

	private HauptFenster hauptFenster;
	private MouseEvent me;
	private int x1, y1, x2, y2;
	private boolean lineStart;
	

	public MausBereich(HauptFenster hauptFenster) {
		this.hauptFenster = hauptFenster;
		this.setBackground(Color.WHITE);
		this.addMouseMotionListener(this);
		hauptFenster.getContentPane().add(BorderLayout.CENTER, this);

	}

	public void mouseDragged(MouseEvent e) {
		if(!lineStart){
			lineStart = true;
			x1 = (int) e.getPoint().getX();
			y1 = (int) e.getPoint().getY();
		}
		final MouseEvent me = e;
		SwingUtilities.invokeLater(new Runnable() {

			public void run() {
				x2 = (int) me.getPoint().getX();
				y2 = (int) me.getPoint().getY();
				hauptFenster.setLabelText((int) me.getPoint().getX(),
						(int) me.getPoint().getY(), Color.RED);
				
			}
		});
	}

	public void mouseMoved(MouseEvent e) {
		lineStart = false;
		final MouseEvent me = e;
		SwingUtilities.invokeLater(new Runnable() {

			public void run() {
				hauptFenster.setLabelText((int) me.getPoint().getX(),
						(int) me.getPoint().getY(), Color.BLACK);
			}
		});
	}
	
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		if(lineStart){
			g.drawLine(x1, y1, x2, y2);
		}
	}

}

mit dem MouseListener verhält es sich ähnlich.
Was du nun für Methoden benötigst, um deine Logik zu steuern hängt nun witklich von etwas mehr Information ab.
Ich denke mal damit kommst du aber schon mal ein Stück weiter.


Gruß Vanny
 
Zuletzt bearbeitet von einem Moderator:
V

vanny

Gast
Naja Krampf ^^..ne is richtig, ich hatte etwas anderes ausprobiert und vergessen es wieder zurück zu setzen^^ sry.

aber sollte er dann mit mehreren Threads arbeiten, wäre das Problem ja schon mal gelöst xD.
Ich lasse es jetzt aber mal so, damit dein Post hier nich aus dem Kontext gerissen wird.

Gruß und danke für den Hinweis Vanny:oops:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
AmsananKING ListView Drag And Drop AWT, Swing, JavaFX & SWT 0
AmsananKING Drag And Drop Filenames Inside A Listview AWT, Swing, JavaFX & SWT 1
DonBronson Java Graphics bewegbar machen (Drag&Drop) AWT, Swing, JavaFX & SWT 3
M Polygon per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 26
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
N Drag and Drop Fenster AWT, Swing, JavaFX & SWT 11
F Drag&Drop mit Transparenter Farbe bei PNG AWT, Swing, JavaFX & SWT 0
D JavaFX Pane per Drag&Drop bewegen? AWT, Swing, JavaFX & SWT 2
L JavaFX Drag and Drop funktioniert nicht AWT, Swing, JavaFX & SWT 3
J Drag and Drop von eigenen Objekten AWT, Swing, JavaFX & SWT 3
J Drag and Drop eines Buttons AWT, Swing, JavaFX & SWT 0
T Swing Drag and Drop für JComponents AWT, Swing, JavaFX & SWT 1
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
F Drag und Drop AWT, Swing, JavaFX & SWT 0
L JavaFX JavaFX Chart Drag and Drop AWT, Swing, JavaFX & SWT 3
D JavaFX Drag&Drop mehrerer TreeViews oder TableViews AWT, Swing, JavaFX & SWT 1
P Drag & Drop zwischen Panels AWT, Swing, JavaFX & SWT 0
U Drag and Drop mit imageview AWT, Swing, JavaFX & SWT 0
U Drag and Drop imageviews AWT, Swing, JavaFX & SWT 8
D SteelSeries in Netbeans als Drag-and-Drop einbinden AWT, Swing, JavaFX & SWT 0
C JTable Drag and Drop von Zeilen innerhalb einer Table AWT, Swing, JavaFX & SWT 2
S Swing Update eine JTabelle nach einer Drag&Drop Operation AWT, Swing, JavaFX & SWT 0
S Swing Suche Drag & Drop Beispiele AWT, Swing, JavaFX & SWT 1
A Drag and Drop mit JAVAFX- Scenebuilder AWT, Swing, JavaFX & SWT 1
R Performance Drag and Drop & Timer AWT, Swing, JavaFX & SWT 3
R Drag and Drop Problem auf Jpanel AWT, Swing, JavaFX & SWT 2
N Swing JTable und Drag und Drop AWT, Swing, JavaFX & SWT 2
A Drag and Drop eigener Objekte AWT, Swing, JavaFX & SWT 7
C Drag and Drop (inventar) AWT, Swing, JavaFX & SWT 15
F Swing Drag and Drop in JTree aus verschiedenen Listen AWT, Swing, JavaFX & SWT 6
T Swing JButton per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 5
Iron Monkey JFileChooser - Drag and Drop AWT, Swing, JavaFX & SWT 5
Iron Monkey Nach Drag & Drop die Datei auf Komponent darstellen AWT, Swing, JavaFX & SWT 2
M AWT Drag n Drop-Support für Component AWT, Swing, JavaFX & SWT 5
HaukeG Swing Drag & Drop in verschiedenen Varianten AWT, Swing, JavaFX & SWT 4
S Swing Drag&Drop mit TransferHandler und JPanels AWT, Swing, JavaFX & SWT 8
C Swing Simulation von Drag and Drop Events AWT, Swing, JavaFX & SWT 3
H Swing "Drag and Drop" eines JComponent über ein JPanel AWT, Swing, JavaFX & SWT 2
R Drag 'n Drop AWT, Swing, JavaFX & SWT 3
S Selektion bei Drag&Drop AWT, Swing, JavaFX & SWT 4
C Swing Drag and Drop mit Objekten in einem Fenster. AWT, Swing, JavaFX & SWT 9
T SWT Drag&Drop: Eclipse FileTransfer mit Icons AWT, Swing, JavaFX & SWT 14
T Swing Drag and Drop - JLabels tauschen statt überschreiben AWT, Swing, JavaFX & SWT 11
S Drag and Drop über 2 Panels AWT, Swing, JavaFX & SWT 2
K JButtons innerhalb eines JPanels verschieben (DRAG&DROP) AWT, Swing, JavaFX & SWT 5
B Drag and Drop AWT, Swing, JavaFX & SWT 6
K Drag and Drop Workbench AWT, Swing, JavaFX & SWT 2
P SWT Eclipse Draw2D Drag and Drop (ruckelt) AWT, Swing, JavaFX & SWT 4
F SWT Drag and Drop im TreeViewer AWT, Swing, JavaFX & SWT 4
B Swing Drag&Drop mit Feedback (Image am Mauszeiger) AWT, Swing, JavaFX & SWT 7
Spin JFrame/ Frame Drag and Drop AWT, Swing, JavaFX & SWT 13
A TransferHandler & Drag n' Drop AWT, Swing, JavaFX & SWT 2
R Drag an Drop JTable Zelle AWT, Swing, JavaFX & SWT 6
D Drag & Drop - node.isRoot AWT, Swing, JavaFX & SWT 3
E Swing Drag n Drop Verschieben von Labels o.ä. AWT, Swing, JavaFX & SWT 10
E Swing Beim Drag & Drop, Drag verbieten?! AWT, Swing, JavaFX & SWT 2
E JTree Autoscroll bei Drag and Drop AWT, Swing, JavaFX & SWT 4
F Swing Problem mit Drag&Drop in JTable AWT, Swing, JavaFX & SWT 4
C keine weiteren Events während Drag&Drop Operation möglich? AWT, Swing, JavaFX & SWT 5
E Drag&Drop zwischen 2 Listen AWT, Swing, JavaFX & SWT 5
0 Swing Drag n' Drop Bug wenn Source und Target gleiche Komponente? AWT, Swing, JavaFX & SWT 4
C Drag and Drop JPanel auf JPanel nach drop erneut verschieben? AWT, Swing, JavaFX & SWT 3
M Swing JTable Drag'n'Drop von Dateien AWT, Swing, JavaFX & SWT 3
M Drag and Drop: Quellfenster AWT, Swing, JavaFX & SWT 2
M Buttons per Drag & Drop im GridBagLayout verschieben AWT, Swing, JavaFX & SWT 6
M Swing JList > Drag & Drop AWT, Swing, JavaFX & SWT 2
C Drag an Drop vom JTree zur JTable AWT, Swing, JavaFX & SWT 4
Z Drag and Drop auf Application AWT, Swing, JavaFX & SWT 3
G Drag and Drop JTree to Canvas AWT, Swing, JavaFX & SWT 7
H Drag&Drop von JComponents AWT, Swing, JavaFX & SWT 6
G JTable drag and drop AWT, Swing, JavaFX & SWT 4
H Drag&Drop mit GWT AWT, Swing, JavaFX & SWT 8
B Swing Drag&Drop einzelner Zellen in einer JTable AWT, Swing, JavaFX & SWT 12
A Swing Drag and Drop TreeNode User Object AWT, Swing, JavaFX & SWT 3
P JList: Reihenfolge der Elemente per Drag'n'Drop ändern. AWT, Swing, JavaFX & SWT 9
K Swing Wie ändere ich die default action für Drag&Drop AWT, Swing, JavaFX & SWT 6
R JLayeredPane - Drag&Drop - mouseDragged AWT, Swing, JavaFX & SWT 6
C JTable mit RowSorter und Drag & Drop: Zeile verschieben AWT, Swing, JavaFX & SWT 4
V SWT TreeViewer Drag'n'Drop LocalSelectionTransfer AWT, Swing, JavaFX & SWT 10
R Swing JLayeredPane - Drag&Drop Positionen vertauschen AWT, Swing, JavaFX & SWT 3
F Drag & Drop mit eigenen Komponenten AWT, Swing, JavaFX & SWT 2
B SWT - Drag & Drop innerhalb einer Table AWT, Swing, JavaFX & SWT 3
S Drag'n'Drop AWT, Swing, JavaFX & SWT 8
E Drag&Drop JTable; Renderer füllt alle Zellen AWT, Swing, JavaFX & SWT 10
M Drag & Drop in Swing (createTransferable) AWT, Swing, JavaFX & SWT 6
T Drag Quelle beim Drop AWT, Swing, JavaFX & SWT 6
A Drag & Drop von Zeilen innerhalb einer Tabelle AWT, Swing, JavaFX & SWT 2
E Drag & Drop von jTree in JList AWT, Swing, JavaFX & SWT 5
P Dateien per Drag&Drop ins Java-Fenster ziehen AWT, Swing, JavaFX & SWT 8
G JTree Node ggf. aufklappen bei Drag & Drop? AWT, Swing, JavaFX & SWT 7
J Drag'n Drop imm selben Frame unterbinden AWT, Swing, JavaFX & SWT 3
S Table Row per Drag and Drop in andere Table schieben? AWT, Swing, JavaFX & SWT 14
X wiedermal Drag n Drop AWT, Swing, JavaFX & SWT 2
P Drag & Drop AWT, Swing, JavaFX & SWT 2
X Drag and Drop AWT, Swing, JavaFX & SWT 2
F Drag&Drop Jlist -> JList AWT, Swing, JavaFX & SWT 3
G Drag and Drop mal wieder? AWT, Swing, JavaFX & SWT 2
G Drag And Drop von Component (List, Tree) zum Desktop AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben