Linie zwischen JComponents

Status
Nicht offen für weitere Antworten.

Miss Marple

Mitglied
Hallo zusammen,

kann man zwischen 2 kleinen JComponents(10 x 10 Pixel), welche auf einem JPanel liegen eine Linie zeichnen?

Ich habs folgendermaßen probiert. Die Linie wird aber nicht angezeigt.

Kann mir jemend helfen bitte?

Code:
@Override
	protected void paintComponent(Graphics g) {

		Graphics2D zwod = (Graphics2D)g;
		Graphics2D parentzwod = (Graphics2D)this.getParent().getGraphics();
		
		zwod.setColor(Color.RED);
		zwod.fillRect(0, 0, width, height);
		zwod.setColor(Color.GREEN);

		if(!isRoot()){
			int tox = dcparent.getLocation().x-this.getLocation().x+width/2;
			int toy = dcparent.getLocation().y-this.getLocation().y+height;
			zwod.drawLine(width/2, 0, tox, toy);
			parentzwod.setColor(Color.GREEN);
			parentzwod.drawLine(this.getLocation().x, this.getLocation().y, tox, toy);
			
			System.out.println("Parentloc: "+dcparent.getLocation()+" MyLoc: "+this.getLocation());
			System.out.println("tox: "+tox+" toy: "+toy);
		}

		System.out.println("parent: "+this.getParent().getClass());
	}
 

kleiner_held

Top Contributor
Mit this.getParent().getGraphics(); solltest Du nicht arbeiten.

Ich wuerde fuer sowas eine Subklasse von JPanel erzeugen und in deren paintComponent die 2 children per Linie verbinden.
 

André Uhres

Top Contributor
Code:
package paint;
/*
 * VerbindenDemo.java
 */
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
public class VerbindenDemo extends JFrame {
    private Zeichenflaeche zf;
    private JToggleButton bt;
    public VerbindenDemo() {
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(150, 180);
        setLocationRelativeTo(null);
        zf = new Zeichenflaeche();
        zf.add(new Kasten(10,10,10,10, Color.RED));
        zf.add(new Kasten(100,100,10,10, Color.GREEN));
        add(zf);
        bt = new JToggleButton("Verbinden");
        add(bt, BorderLayout.SOUTH);
        bt.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                zf.verbinden(15,20,105,100, bt.isSelected()?Color.BLUE:Color.WHITE);
                bt.setText(bt.isSelected()?"Trennen":"Verbinden");
            }
        });
    }
    public static void main(final String args[]) {new VerbindenDemo().setVisible(true);}
}
class Zeichenflaeche extends JPanel{
    private Image img;
    private Graphics2D g2d;
    public Zeichenflaeche(){
        setLayout(null);
    }
    @Override
    public void paintComponent(final Graphics g) {
        super.paintComponent(g);
        if (img == null) {
            img = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
            g2d = (Graphics2D)img.getGraphics();
            g2d.setColor(Color.white);
            g2d.fillRect(0, 0, getWidth(), getHeight());
            g2d.setColor(Color.BLACK);
        }
        g.drawImage(img, 0, 0, null);
    }
    public void verbinden(final int x1, final int y1, final int x2, final int y2, final Color color) {
        g2d.setColor(color);
        g2d.drawLine(x1,y1,x2,y2);
        repaint();
    }
}
class Kasten extends JPanel{
    public Kasten(final int x, final int y, final int w, final int h, final Color color){
        super();
        setBackground(color);
        setBounds(x, y, w, h);
    }
}
 

Miss Marple

Mitglied
Danke für die Hilfe.
Das wäre auf jeden Fall eine Alternative. Die Frage ist aber, ob das die einzige Alternative ist?

Gibt es denn überhaupt in Java eine Möglichkeit über den Rand einer JComponent hinaus zu zeichnen? Oder ist der Gedanke irrsinn?

Warum soll man nicht mit getParent().getGraphics() arbeiten?

Kann mir noch einer zusätzlich den Unterschied zwischen JComponent.repaint() und JComponent.revalidate() erklären?

Vielen Dank für die Hilfe!

Schönes WE...
 

Wildcard

Top Contributor
Miss Marple hat gesagt.:
Warum soll man nicht mit getParent().getGraphics() arbeiten?
Du musst doch zugeben das es unsinnig ist wenn das Kind den Elter zeichnet...
Kann mir noch einer zusätzlich den Unterschied zwischen JComponent.repaint() und JComponent.revalidate() erklären?
revalidate wird benötigt wenn sich die Liste der Kinder verändert, repaint ist eine Bitte neu zeichnen zu lassen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Linie zwischen 2 Elementen AWT, Swing, JavaFX & SWT 5
M JavaFX Diagonale Linie nicht ausgegeben/angezeigt AWT, Swing, JavaFX & SWT 1
G Linie mit der Maus auswählen AWT, Swing, JavaFX & SWT 5
G JavaFX Line Chart mit Farbverlauf/Gradient in Linie AWT, Swing, JavaFX & SWT 1
L 2D-Grafik Linie von Kreis zu Kreis AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Linie wird nach Mausklick nicht am richtigen Ort gezeichnet AWT, Swing, JavaFX & SWT 11
K JavaFX Linie immer in der Mitte der Szene halten AWT, Swing, JavaFX & SWT 12
L JavaFX Horizontale Linie zur Scene binding AWT, Swing, JavaFX & SWT 3
3 2D-Grafik BasicStroke dash pattern - Linie zu lang!? AWT, Swing, JavaFX & SWT 1
I Text zur Linie zeichnen AWT, Swing, JavaFX & SWT 1
I Pfeil zeichnen am Ende einer Linie AWT, Swing, JavaFX & SWT 1
javampir Kubische Interpolation einer Linie AWT, Swing, JavaFX & SWT 5
C AWT Horizontale Linie in einem Panel AWT, Swing, JavaFX & SWT 12
propra Auf einem JPanel gezeichnete Linie auswählen AWT, Swing, JavaFX & SWT 3
Gossi 2D-Grafik Linie erweitern? AWT, Swing, JavaFX & SWT 10
V Linie mit Länge und Bogenmaß AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Linie hat Löcher AWT, Swing, JavaFX & SWT 10
P 2D-Grafik Neue Farbe für einen Teilbereich einer Linie? AWT, Swing, JavaFX & SWT 8
K 2D-Grafik Linie verschwindet beim Zeichnen AWT, Swing, JavaFX & SWT 10
I Schrift und Farbe formatieren, und zwar pro Linie... AWT, Swing, JavaFX & SWT 4
C Swing JTable: Horizontale Linie bei einzelnen Zellen ausblenden AWT, Swing, JavaFX & SWT 5
G SWT Linie unter transparentes Canvas zeichnen AWT, Swing, JavaFX & SWT 4
B SWT Linie soll in Abhängigkeit der aktuellen Uhrzeit gezeichnet werden AWT, Swing, JavaFX & SWT 16
M Labels in ScrollPane mit Linie verbinden AWT, Swing, JavaFX & SWT 2
R JPanel - zeichnen in skalierten Bereich - Linie (X-Achse) nicht sichtbar AWT, Swing, JavaFX & SWT 11
J Swing - ich sehe keine Linie, andere schon AWT, Swing, JavaFX & SWT 6
S JXTaskPane und gepunktete Linie AWT, Swing, JavaFX & SWT 2
G SWT Linie AWT, Swing, JavaFX & SWT 13
F Rahmen mit gestrichelter Linie zeichnen AWT, Swing, JavaFX & SWT 4
G Linie nach Höhe einer Zahl zeichnen? AWT, Swing, JavaFX & SWT 3
T Linie langsam zeichnen AWT, Swing, JavaFX & SWT 3
L Linie mit drawLine auf JPanel AWT, Swing, JavaFX & SWT 7
A gezeichnete Linie verschwindet, wenn ich JMenuBar öffne AWT, Swing, JavaFX & SWT 2
S Problem mit dem Zeichnen einer Linie auf einem JPanel AWT, Swing, JavaFX & SWT 30
TheJavaKid Kreis, Rechteck, Linie. verschieben AWT, Swing, JavaFX & SWT 5
Student "Dicke" einer Linie - Line2D.Double AWT, Swing, JavaFX & SWT 12
R drawLine gibt hässliche linie AWT, Swing, JavaFX & SWT 4
T Vertikale Linie abgeschnitten AWT, Swing, JavaFX & SWT 2
C Linie in einem JLabel AWT, Swing, JavaFX & SWT 14
G linie / vektor zeichnen AWT, Swing, JavaFX & SWT 2
K Linie wird falsch auf Panel gezeichnet AWT, Swing, JavaFX & SWT 11
M JButtons mit Linie verbinden AWT, Swing, JavaFX & SWT 4
M JavaFX Abstand zwischen AnchorPane und Labels in dem HBox halten AWT, Swing, JavaFX & SWT 1
U 2dgraphics unterschied zwischen .scale und AffineTransform.getScaleInstance AWT, Swing, JavaFX & SWT 4
S JavaFX Fehler zwischen View und Controller bei MouseEvent (MVC) AWT, Swing, JavaFX & SWT 13
missy72 JavaFX TableView Spalte zwischen den Zeilen AWT, Swing, JavaFX & SWT 5
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
Z Swing Kann man denn abstand zwischen zwei Buttons berechnen AWT, Swing, JavaFX & SWT 5
M Kommunikation zwischen zwei Stages AWT, Swing, JavaFX & SWT 0
T JavaFX - Datenübergabe zwischen Scenes AWT, Swing, JavaFX & SWT 8
S JavaFX Unterschiede zwischen Scene Builder 2.0 und der ausgeführten App AWT, Swing, JavaFX & SWT 17
Informatiknoob AWT Zahlenraten (eine Zahl zwischen 1 und 10) AWT, Swing, JavaFX & SWT 1
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
ralfb1105 JavaFX Daten zwischen Controller "austauschen" AWT, Swing, JavaFX & SWT 65
L Wörter zwischen zwei Grenzen einlesen. AWT, Swing, JavaFX & SWT 13
P Zwischen verschiedenen Panels wechseln AWT, Swing, JavaFX & SWT 3
M Schnittpunkte zwischen zwei Graphics2D Elemente ermitteln. AWT, Swing, JavaFX & SWT 5
O Focus zwischen Chat und Spiel wechselns AWT, Swing, JavaFX & SWT 3
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
Arif AWT Unterschied zwischen RED und red AWT, Swing, JavaFX & SWT 4
D Swing Kommunikation zwischen zwei GUI's AWT, Swing, JavaFX & SWT 2
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
D Zwischen Null-Layouts wechseln AWT, Swing, JavaFX & SWT 2
K Wie kann ich eine Variable zwischen Tab Klassen weitergeben ? AWT, Swing, JavaFX & SWT 7
S JavaFX (Best Practise) Daten zwischen Controllern austauschen AWT, Swing, JavaFX & SWT 1
P 2D-Grafik Bogen(Arc) zwischen zwei Punkten zeichnen AWT, Swing, JavaFX & SWT 2
P Drag & Drop zwischen Panels AWT, Swing, JavaFX & SWT 0
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
B Vertikale Größenänderung zwischen zwei Widgets AWT, Swing, JavaFX & SWT 2
T Swing Kompatibilitätsproblem zwischen Swing und JavaFX AWT, Swing, JavaFX & SWT 4
S Verzögerung zwischen Cursorbewegung einbauen AWT, Swing, JavaFX & SWT 1
3 Swing Vertikaler Separator zwischen JMenu's AWT, Swing, JavaFX & SWT 2
D JGridLayout zwischen Zeilen bestimmter Abstand AWT, Swing, JavaFX & SWT 3
S Unterschied zwischen id und fx:id AWT, Swing, JavaFX & SWT 5
F Swing JAVA GUI Übergabe von Werten zwischen mehreren Fenstern/Klassen AWT, Swing, JavaFX & SWT 10
B Datenübergabe zwischen Tabs und Daten speichern AWT, Swing, JavaFX & SWT 2
B Kommunikation zwischen zwei Fenstern und vorübergehende Speicherung der Eingaben AWT, Swing, JavaFX & SWT 4
D animierte kameraansicht zwischen gezeichneten objekten AWT, Swing, JavaFX & SWT 4
B Swing JMenu zwischen anderen Componenten AWT, Swing, JavaFX & SWT 4
F Swing Ladebildschirm zwischen zwei SWING Frames AWT, Swing, JavaFX & SWT 11
T JTabbedPane - neuen Tab zwischen zwei anderen Tabs hinzufügen AWT, Swing, JavaFX & SWT 2
GUI-Programmer JWindow zwischen den Desktopbild und Dektopverknüpfungen AWT, Swing, JavaFX & SWT 16
Psypsy Swing SwingWorker unterschied zwischen setProgress und process AWT, Swing, JavaFX & SWT 2
propra Schnittpunkt zwischen Objekt und Kante finden AWT, Swing, JavaFX & SWT 24
H Swing Wechsel zwischen Frames AWT, Swing, JavaFX & SWT 6
S Swing Zwischenräume zwischen JPanels AWT, Swing, JavaFX & SWT 4
A Daten umherschieben zwischen zwei Klassen AWT, Swing, JavaFX & SWT 40
X zwischen 2 JPanels "elegant" wechseln AWT, Swing, JavaFX & SWT 3
B LayoutManager Positionierung zwischen zwei Layoutkomponenten AWT, Swing, JavaFX & SWT 2
N Swing DnD zwischen zwei JTrees AWT, Swing, JavaFX & SWT 2
G Unterschiedliche Pfadangabe zu Icons zwischen JApplet und JWindow? AWT, Swing, JavaFX & SWT 2
D JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern AWT, Swing, JavaFX & SWT 2
G Swing MigLayout: Lücken zwischen Elementen entfernen AWT, Swing, JavaFX & SWT 2
F Variablen zwischen Frames AWT, Swing, JavaFX & SWT 5
V Swing JLabel zwischen 2 JPanel hin- und herbewegen. AWT, Swing, JavaFX & SWT 12
E Drag&Drop zwischen 2 Listen AWT, Swing, JavaFX & SWT 5
M SWT DND zwischen zwei TreViewern in beide Richtungen AWT, Swing, JavaFX & SWT 10
buntuswalus Swing Datentransfer zwischen JPanels AWT, Swing, JavaFX & SWT 18
P Swing Beziehungen zwischen 3 Klassen AWT, Swing, JavaFX & SWT 4
R Swing Kommunikation zwischen Panels AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben