Auf Klasse in anderer Klasse zugreifen

Status
Nicht offen für weitere Antworten.

The_S

Top Contributor
Hi, wollte mal fragen, wie ich sowas mache:

Ich habe drei Klassen. Alle erben von JApplet. In der 2. Klasse adde ich einem JPanel die 3. Klasse. Nun möchte ich von der 1. Klasse aus erreichen, dass die 3. Klasse (in der 2. Klasse) neugezeichnet wird.
 
Das geht mit Referenzen und Methoden-Aufrufen:
Code:
class Class1 extends JApplet {
  Class2 class2 = new Class2();
  
  // ...
  public void myMethod() {
    class2.doTheRepaint();
  }
  // ...
}

class Class2 extends JApplet {

  Class3 class3 = new Class3();

  // ...
  public void doTheRepaint() {
    class3.repaint();
  }
  // ...
}
 
Hab das jetzt so gemacht:

Klasse 1 (WebMenu)
Code:
Fenster win = new Fenster();
...
win.repaintUpPane();

Klasse 2 (Fenster)
Code:
UpPane up = new UpPane();
...
void repaintUpPane() {
	
	up.repaint();
}

Müsste ja theoretisch funktionieren. Tuts aber net. ???:L. Repaint wird erst ausgeführt, wenn klasse3 z.B. überdeckt wird.
 
Könnte es sein, dass es daran liegt, weil Klasse1 und 2 jeweils ein "eigenes Programm" ist? Ich bette beide in dei html-Seite ein. ???:L :?:
 
Das wohl geht nicht, weil du eine neue (andere) Referenz erzeugst, die auch auf ein anderes Objekt zeigt.
Du musst Referenzen auf schon vorhandene Objekte übergeben, bzw. mit vorhandenen Referenzen arbeiten und auf diesen deine Methoden aufrufen.

Edit: Dann probiere es mal mit AppletContext.
 
Danke für die Antwort, habs anders gelöst. Es ging darum, dass ein bestimmtes Element, nach dem Klick auf einen Button verändert wird. Das selbe soll auch dann passieren, wenn in einem JEditorPane auf einen Hyperlink geklickt wird. Also hab ich das JEditorPane static gemacht und einfach von meiner 1. Klasse aus ein HyperlinkEvent vom editorPane in Klasse 2 gefeuert. Reichlich kompliziert, aber damit gehts 😀

[edit] Falls es jemanden interessiert:

Code:
Fenster.edit.fireHyperlinkUpdate(new HyperlinkEvent(temp, HyperlinkEvent.EventType.ACTIVATED, getCodeBase(), temp));

Code:
	public void hyperlinkUpdate(HyperlinkEvent hyl) {
		
		if (hyl.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
			try {
				if (hyl.getDescription().startsWith("http://")) {
					getAppletContext().showDocument(new URL(hyl.getDescription()), "_blank");
				}
				else {
					edit.setPage(new URL(getCodeBase(), hyl.getDescription()));
					edit.getPage();
					String temp = hyl.getDescription().replaceAll("_", " ");
					up.show = temp.substring(0, temp.length() - 5);
					up.repaint();
				}
			}
			catch(IOException e) {
				System.out.println(e);
			}
		}
	}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben