G
Gelöschtes Mitglied 67058
Gast
Hallo liebe Foren-Teilnehmer,
vielleicht hat jemand eine Idee wie man zwei Punkte in zwei verschiedenen Fenstern gleichzeitig zeichnen kann. Da ich selber hier nicht weiterkomme, habe ich zwei einfache Beispiele angefügt, mit denen ich teste. Leider hat der Versuch mit convertPoint, MouseListener, MouseMotionListener und auch damit ein Objekt, das schon erzeugt wurde an zwei verschiedene Frames zu übergeben nicht gelungen.
Erstes Beispiel: Linie zeichnen in zwei Fenstern gleichzeitig (zeichnet im zweiten Fenster nicht) / Zweites Beispiel ist nur evtl. eine Möglichkeit: Wie ein Objekt an einen nachfolgenden Frame übergeben werden kann. Vielen Dank im Voraus.
[CODE lang="java" title="Paint in zwei Fenstern gleichzeitig"]
public class P1 extends Component{
public static void main(String[] args)
{
JFrame f = new JFrame("Draw a Line");
f.setSize(300, 300);
f.setLocation(300, 300);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Component p = new Component() {
Point pointStart = new Point(200,200);
Point pointEnd = new Point(100,100);
// Point containerPoint1 = null;
// Point containerPoint2 = null;
Component p1 = new P1();
Component p2 = new P2();
// Component p4 = new P4(pointStart, pointEnd);
{
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
pointStart = e.getPoint();
Point containerPoint1 = SwingUtilities.convertPoint(
p1,
pointStart,
p4);
Component p4 = new P4(pointStart, pointEnd);
p4.repaint();
}
public void mouseReleased(MouseEvent e) {
pointStart = null;
Point containerPoint1 = null;
Component p4 = new P4(pointStart, pointEnd);
p4.repaint();
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
pointEnd = e.getPoint();
Point containerPoint2 = SwingUtilities.convertPoint(
p1,
pointEnd,
p4);
Component p4 = new P4(pointStart, pointEnd);
p4.repaint();
}
public void mouseDragged(MouseEvent e) {
pointEnd = e.getPoint();
Point containerPoint2 = SwingUtilities.convertPoint(
p1,
pointEnd,
p4);
repaint();
Component p4 = new P4(pointStart, pointEnd);
p4.repaint();
}
});
Component p4 = new P4(pointStart, pointEnd);
p4.repaint();
}
public void paint(Graphics g) {
super.paint(g);
// pointStart = new Point(20,20);
// pointEnd = new Point(200,200);
if (pointStart != null) {
g.setColor(Color.red);
g.fillOval(pointStart.x - 10, pointStart.y - 10, 20, 20);
g.setColor(Color.BLUE);
g.fillOval(pointEnd.x - 10, pointEnd.y - 10, 20, 20);
g.drawLine(pointStart.x, pointStart.y, pointEnd.x, pointEnd.y);
Main m = new Main();
m.convertPoint(p1,pointStart, p4);
m.convertPoint(p1,pointEnd, p4);
Component p4 = new P4(pointStart, pointEnd);
p4.repaint();
}
}
};
// Point glassPanePoint = e.getPoint();
// Container container = contentPane;
f.add(p);
f.setVisible(true);
}
}
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JFrame;
public class P2 extends Component{
public P2() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args)
{
JFrame f = new JFrame("Draw a Line");
f.setSize(300, 300);
f.setLocation(300, 300);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Component p2 = new Component() {
Point pointStart = null;
Point pointEnd = null;
{
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
pointStart = e.getPoint();
}
public void mouseReleased(MouseEvent e) {
pointStart = null;
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
pointEnd = e.getPoint();
}
public void mouseDragged(MouseEvent e) {
pointEnd = e.getPoint();
repaint();
}
});
}
public void paint(Graphics g) {
super.paint(g);
// pointStart = new Point(140,40);
// pointEnd = new Point(100,20);
if (pointStart != null) {
g.setColor(Color.BLUE);
g.drawLine(pointStart.x, pointStart.y, pointEnd.x, pointEnd.y);
System.out.println("REPAINT wurde aufgerufen");
}
}
};
f.add(p2);
f.setVisible(true);
}
}
//Mit diesem Test, den ich im Netz gegoogelt habe,
//komme ich leider auch nicht weiter
public class OneFrame {
public GrossesBild so = null;
// create it in this class and do things with it
public OneFrame() {
so = new GrossesBild();
}
private void openNewFrame() {
NewFrame nf = new NewFrame(so);
}
}
public class NewFrame{
public static GrossesBild so = null;
public NewFrame(GrossesBild so) {
this.so = so;
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewFrame(so);
}
});
}
}[/CODE]
vielleicht hat jemand eine Idee wie man zwei Punkte in zwei verschiedenen Fenstern gleichzeitig zeichnen kann. Da ich selber hier nicht weiterkomme, habe ich zwei einfache Beispiele angefügt, mit denen ich teste. Leider hat der Versuch mit convertPoint, MouseListener, MouseMotionListener und auch damit ein Objekt, das schon erzeugt wurde an zwei verschiedene Frames zu übergeben nicht gelungen.
Erstes Beispiel: Linie zeichnen in zwei Fenstern gleichzeitig (zeichnet im zweiten Fenster nicht) / Zweites Beispiel ist nur evtl. eine Möglichkeit: Wie ein Objekt an einen nachfolgenden Frame übergeben werden kann. Vielen Dank im Voraus.
[CODE lang="java" title="Paint in zwei Fenstern gleichzeitig"]
public class P1 extends Component{
public static void main(String[] args)
{
JFrame f = new JFrame("Draw a Line");
f.setSize(300, 300);
f.setLocation(300, 300);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Component p = new Component() {
Point pointStart = new Point(200,200);
Point pointEnd = new Point(100,100);
// Point containerPoint1 = null;
// Point containerPoint2 = null;
Component p1 = new P1();
Component p2 = new P2();
// Component p4 = new P4(pointStart, pointEnd);
{
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
pointStart = e.getPoint();
Point containerPoint1 = SwingUtilities.convertPoint(
p1,
pointStart,
p4);
Component p4 = new P4(pointStart, pointEnd);
p4.repaint();
}
public void mouseReleased(MouseEvent e) {
pointStart = null;
Point containerPoint1 = null;
Component p4 = new P4(pointStart, pointEnd);
p4.repaint();
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
pointEnd = e.getPoint();
Point containerPoint2 = SwingUtilities.convertPoint(
p1,
pointEnd,
p4);
Component p4 = new P4(pointStart, pointEnd);
p4.repaint();
}
public void mouseDragged(MouseEvent e) {
pointEnd = e.getPoint();
Point containerPoint2 = SwingUtilities.convertPoint(
p1,
pointEnd,
p4);
repaint();
Component p4 = new P4(pointStart, pointEnd);
p4.repaint();
}
});
Component p4 = new P4(pointStart, pointEnd);
p4.repaint();
}
public void paint(Graphics g) {
super.paint(g);
// pointStart = new Point(20,20);
// pointEnd = new Point(200,200);
if (pointStart != null) {
g.setColor(Color.red);
g.fillOval(pointStart.x - 10, pointStart.y - 10, 20, 20);
g.setColor(Color.BLUE);
g.fillOval(pointEnd.x - 10, pointEnd.y - 10, 20, 20);
g.drawLine(pointStart.x, pointStart.y, pointEnd.x, pointEnd.y);
Main m = new Main();
m.convertPoint(p1,pointStart, p4);
m.convertPoint(p1,pointEnd, p4);
Component p4 = new P4(pointStart, pointEnd);
p4.repaint();
}
}
};
// Point glassPanePoint = e.getPoint();
// Container container = contentPane;
f.add(p);
f.setVisible(true);
}
}
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JFrame;
public class P2 extends Component{
public P2() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args)
{
JFrame f = new JFrame("Draw a Line");
f.setSize(300, 300);
f.setLocation(300, 300);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Component p2 = new Component() {
Point pointStart = null;
Point pointEnd = null;
{
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
pointStart = e.getPoint();
}
public void mouseReleased(MouseEvent e) {
pointStart = null;
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
pointEnd = e.getPoint();
}
public void mouseDragged(MouseEvent e) {
pointEnd = e.getPoint();
repaint();
}
});
}
public void paint(Graphics g) {
super.paint(g);
// pointStart = new Point(140,40);
// pointEnd = new Point(100,20);
if (pointStart != null) {
g.setColor(Color.BLUE);
g.drawLine(pointStart.x, pointStart.y, pointEnd.x, pointEnd.y);
System.out.println("REPAINT wurde aufgerufen");
}
}
};
f.add(p2);
f.setVisible(true);
}
}
//Mit diesem Test, den ich im Netz gegoogelt habe,
//komme ich leider auch nicht weiter
public class OneFrame {
public GrossesBild so = null;
// create it in this class and do things with it
public OneFrame() {
so = new GrossesBild();
}
private void openNewFrame() {
NewFrame nf = new NewFrame(so);
}
}
public class NewFrame{
public static GrossesBild so = null;
public NewFrame(GrossesBild so) {
this.so = so;
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewFrame(so);
}
});
}
}[/CODE]