JDialog Problem

HorstP9

Mitglied
hi,

ich habe eine eigene klasse "Dialog.java" vom typ "JDialog" erstellt und möchte einen dialog mit folgender funktion aus meiner main klasse vom typ "JFrame" starten lassen:

Java:
public static void start_dialog()
    {
JDialog d = new Dialog(this, true);
d.setLocationRelativeTo(this);
    d.setVisible(true);
}

allerdings meckert er, da "this" non-static ist und ich diese nicht in einer static verwenden kann.

wie kann ich das problem lösen?

vielen dank schonmal!
 

HorstP9

Mitglied
ja, hab ich mir auch scho gedacht, allerdings arbeite ich noch nicht so lange mit java.

wenn ich die methode nicht-statisch mach, kann ich sie nicht mehr von einer anderen klasse (eingebettetes JPanel) abrufen.

durch was könnte ich das "this" ersetzen?
 

jgh

Top Contributor
durch eine Referenz auf deinen JFrame.
Falls das dir nicht weiter hilft, poste doch einfach mal ein KSKB ;)
 

HorstP9

Mitglied
wie mach ich diese referenz? ich hab da auch schon rumprobiert. der konstruktor von JDialog erwartet den typ "java.awt.Frame". mein JFrame hab ich "MainFrame" genannt.
das mit dem kskb wird auf die schnelle schwierig ;)
 

jgh

Top Contributor
na ja, so z.B. .... du entscheidest doch, was du wem wann und wo mitgibst.
Hier gebe ich der DialogKlasse eine Referenz auf den MainFrame mit. Da ich hier annoyme ActionListener benuzte, muss ich mir sogar eine Referenz im Konstruktor schaffen, nicht schön...aber sollte dir zeigen, dass es relativ einfach ist...

Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainFrame extends JFrame {

	public static void main(String[] args) {
		new MainFrame().setVisible(true);
	}

	MainFrame dieserFrame;

	public MainFrame() {
		dieserFrame = this;
		setSize(500, 400);
		setLocationRelativeTo(null);
		initSomeComponents();
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	private void initSomeComponents() {
		JPanel p = new JPanel();
		JButton b = new JButton("ein Button");
		b.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				new DialogKlasse(dieserFrame).start_dialog();

			}
		});
		p.add(b);
		this.add(p, BorderLayout.NORTH);
	}

}

class DialogKlasse extends JDialog {
	MainFrame mainFrame;

	public DialogKlasse(MainFrame mainFrame) {
		this.mainFrame = mainFrame;
	}

	public void start_dialog() {
		JDialog d = new JDialog(mainFrame, true);
		d.setSize(new Dimension(50, 50));
		d.setLocationRelativeTo(mainFrame);
		d.setVisible(true);
	}
}
 

HorstP9

Mitglied
vielen dank, aber das funktioniert so nicht.
der unterschied bei mir liegt darin, dass mein JPanel eine eigene klasse in einer eigenen datei "Panel.java" ist. das füg ich dann einem anderen panel im JFrame hinzu:

Java:
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
jPanel1.removeAll();
jPanel1.setLayout(new BorderLayout());
jPanel1.add(new panel(), BorderLayout.CENTER);
jPanel1.validate(); }


von diesem panel aus möchte ich dann auf die funktion im JFrame zugreifen, die den JDialog (wiederum eigene klasse) öffnet.

Java:
public static void start_dialog()
    {
JDialog d = new Dialog(this, true);
d.setLocationRelativeTo(this);
    d.setVisible(true);
}

mein problem ist einfach, dass diese start_dialog() eine static ist und ich damit "this" nicht verwenden kann und ohne weiß ich nicht wie ich die referenz auf mein mainframe setzen kann.
wenn start_dialog() nicht-statisch ist, dann kann ich sie nicht aus meiner panel-klasse aufrufen.

ich bin grad etwas überfordert.....
 
Zuletzt bearbeitet:

jgh

Top Contributor
irgendwann initialisierst du dein panel doch...dann gib dem eine Referenz von deinem Frame mit. Diese merkwürdig static-Methode sollte in eine normale Methode verwandelt werden.

ich weiß sonst auch nicht, wie man dir helfen kann...oder du postest deine Klassen und dann kann man dir das mal an einem Bsp. zeigen, wie man es machen könnte.
 

HorstP9

Mitglied
danke, das war die lösung, ich geb dem konstruktor des panels die referenz einfach mit :) danke!
so funktionierts!

wo wir gerade dabei sind, vielleicht hab ich da auch was grundlegendes nicht verstanden?!? aber um diese methode start_dialog() nicht-statisch zu machen, müsste ich sie doch irgendeinem objekt zuordnen? weil wenn ich das static einfach raus nehm, kann ich von einer anderen klasse nicht mehr so einfach (z.b. durch einen buttonklick in einer anderen klasse) drauf zugreifen.
 

jgh

Top Contributor
richtig, aber zu irgendeiner Klasse gehört ja diese Methode! Du bräuchtest natürlich eine Instanz dieses Objektes, um dann darauf zugreifen zu können. Wenn diese Methode nur ein Dialog öffnet, langt es evtl dir eine Util-Klasse zu machen, die dann auch static Methoden anbietet...ansonsten beginnst du langsam mit dem Design von SW und triffst auf die ersten Probs damit. Schau dir bspw. MVC mal an, oder andere Patterns, die sich mit der Trennung von View und bspw. Logik beschäftigen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Problem JDialog.setVisible Java Basics - Anfänger-Themen 3
I JDialog Problem Java Basics - Anfänger-Themen 37
S JDialog resize zur Laufzeit PROBLEM!!! Java Basics - Anfänger-Themen 5
A Jdialog nur 1x anzeigen Java Basics - Anfänger-Themen 2
D JButton in JDialog mit Action belgen Java Basics - Anfänger-Themen 6
J JDialog Zugriff auf parent JDialog Java Basics - Anfänger-Themen 5
J JDialog: wie kann ich ihn direkt als invisible erstellen Java Basics - Anfänger-Themen 7
A JDialog öffnet sich nicht Java Basics - Anfänger-Themen 7
D JDialog schließen Java Basics - Anfänger-Themen 11
I Veränderungen am JPanel vom JDialog aus Java Basics - Anfänger-Themen 6
T Modales JDialog schliessen mit JButton Java Basics - Anfänger-Themen 2
J Icon JDialog mit Java 1.4 Java Basics - Anfänger-Themen 2
M JDialog Modality Java Basics - Anfänger-Themen 7
S JDialog und SwingUtilities Java Basics - Anfänger-Themen 6
H Modalen JDialog schließen, ohne dabei das Parent-Frame zu schließen Java Basics - Anfänger-Themen 7
M JDialog soll was an die AufruferKlasse zurück geben Java Basics - Anfänger-Themen 3
S Layout JDialog Java Basics - Anfänger-Themen 9
S eigene Methoden in JDialog Java Basics - Anfänger-Themen 13
pun Im JDialog auf Objekt im Parent JFrame zugreifen Java Basics - Anfänger-Themen 2
C Frame, JFrame, JDialog Java Basics - Anfänger-Themen 12
S Datenzugriff auf JDialog! Java Basics - Anfänger-Themen 8
A JDialog, Owner JFrame ZIEL: nciht in der taskbar Java Basics - Anfänger-Themen 9
E Übergabe von werten aus einem JDialog Java Basics - Anfänger-Themen 4
B Grafiken/Bilder mit Netbeans in Jdialog Java Basics - Anfänger-Themen 7
O Beim Schließen JDialog, im Frame-Owner eine Methode starten Java Basics - Anfänger-Themen 6
G JDialog + p aintComponent-Override Java Basics - Anfänger-Themen 3
A Klasse erbot von JDialog. Kontruktor? Java Basics - Anfänger-Themen 4
M Hauptfenster nicht wählbar bei offenem JDialog Java Basics - Anfänger-Themen 2
G Bei JDialog warten Java Basics - Anfänger-Themen 5
B Fenstergröße variiert bei JDialog.pack()-Aufruf Java Basics - Anfänger-Themen 10
S JDialog während automatischer Dateisuche einblenden Java Basics - Anfänger-Themen 6
J JDialog zeigt nichts an Java Basics - Anfänger-Themen 4
C JDialog Werte nach Frame übergeben Java Basics - Anfänger-Themen 10
G JDialog + setOpaque Java Basics - Anfänger-Themen 5
G JDialog auf Jpanel statt Frame? Java Basics - Anfänger-Themen 4
N Werte von JDialog entgegennehmen Java Basics - Anfänger-Themen 7
G JDialog-Status im Frame abfragen Java Basics - Anfänger-Themen 2
Bernasconi dynamisches JDialog Java Basics - Anfänger-Themen 2
T Register im JDialog Java Basics - Anfänger-Themen 9
G JDialog übers X schliessen und Programm beenden Java Basics - Anfänger-Themen 4
C Fehlermeldungen umleiten auf JDialog Java Basics - Anfänger-Themen 2
S new .() extends JDialog {.} Java Basics - Anfänger-Themen 15
M Button in einem JDialog mit Enter ausführen Java Basics - Anfänger-Themen 2
C FocusLost reagiert nicht bei JDialog Java Basics - Anfänger-Themen 5
E Von einem JDialog einen neuen JDialog aufrufen Java Basics - Anfänger-Themen 10
R JDialog schließen ( nicht mit dispose()! ) Java Basics - Anfänger-Themen 14
G JDialog Java Basics - Anfänger-Themen 15
M JDialog Java Basics - Anfänger-Themen 3
M JDialog basierend auf JDialog aufrufen Java Basics - Anfänger-Themen 4
B KeyListener beim JDialog Java Basics - Anfänger-Themen 4
E JDialog schließen Java Basics - Anfänger-Themen 9
S JDialog Frage Java Basics - Anfänger-Themen 2
G Wiedermal vererbung, extends JDialog extends Exception ? Java Basics - Anfänger-Themen 8
P JDialog funktioniert nicht? Java Basics - Anfänger-Themen 9
P JDialog & JProgressBar Java Basics - Anfänger-Themen 2
F JDialog per Button-Klick schliessen Java Basics - Anfänger-Themen 2
S JDialog einrichten Java Basics - Anfänger-Themen 4
G Owner von JDialog;Komme einfach nicht weiter Java Basics - Anfänger-Themen 4
G einfaches jdialog beispiel Java Basics - Anfänger-Themen 1
J Default Button bei jDialog Java Basics - Anfänger-Themen 2
M JDialog mit TextArea Java Basics - Anfänger-Themen 2
K JDialog aus einer anderen klasse einfügen Java Basics - Anfänger-Themen 2
S Auf JDialog aus anderer Datei zugreifen Java Basics - Anfänger-Themen 5
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben