JDialog, Modal - Klassenübergreifend => Problem

Hintertür

Mitglied
Nabend,

leute ich sitze vor dem folgendem problem:

ich habe einen frame, mit menüleiste, wo ich über Hilfe -> Info ein neuen frame öffne, welcher in einer anderen klasse liegt.

jedoch soll letzteres kein frame sein, sondern ein dialog. sprich, ich darf nichtmehr in das hauptprogramm(="main" frame) klicken können, bevor der "Info" dialog / frame geschlossen wurde.

ich weiß, das der konstruktor von JDialog so aussieht:
Java:
JDialog dialog = new JDialog(frame, titel, true/false(das modal));
um aber auf den "main" frame zugreifen zu können, müsste ich erst eine instanz ziehen da ich non-static arbeite. habe ich getan und der getter für den frame ist auch programmiert

aber i.wie will das modal nicht so richtig oO scheint so als würde es den "main" frame gar nicht geben

und nach ein paar tests wirft er ne nullpointer..... help pls
 

André Uhres

Top Contributor
Hallo Hintertür,

eine kleine Demo könnte weiterhelfen:

Java:
import javax.swing.*;

public class ModalDemo {
    private final JFrame frame;
    private final JDialog dialog;

    public ModalDemo() {
        frame = new JFrame();
        dialog = new MyDialog(frame, true);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        dialog.setSize(300, 200);
        dialog.setLocationRelativeTo(frame);
        dialog.setVisible(true);
    }

    public static void main(final String[] args) {
        Runnable gui = new Runnable() {

            public void run() {
                ModalDemo newMain = new ModalDemo();
            }
        };
        //GUI must start on EventDispatchThread:
        SwingUtilities.invokeLater(gui);
    }
}

class MyDialog extends JDialog {

    MyDialog(final JFrame owner, final boolean modal) {
        super(owner, modal);
    }
}

Gruß,
André
 

Hintertür

Mitglied
jo danke...
kollege hat mir dazu auch noch nen tipp gegeben und es funzt, endlich...

aber i.wie leider nur das dialog^^ adden will er die sachen nichtmehr... hier mal mein code:
Java:
package grafik;

import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

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

import engine.Close;
class MyDialog extends JDialog {
	 
    MyDialog(final JFrame owner, final boolean modal) {
        super(owner, modal);
    }
}
public class Info extends JDialog implements KeyListener{
		
	Close close = new Close();
	JButton ok = new JButton("OK");
	JDialog dialog;
	private String textAreaData = "ProgrammName\n\rVersion: 1.0\n\r\n\rHier ein Allgemeiner Text bzw Beschreibung\n\r\n\rEntwickler: \n\r------------\n\r------------\n\r------------ ";
	JTextArea textArea = new JTextArea();
	
	public Info (String title,JFrame frame){
		dialog = new MyDialog(frame,true);
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		int xPos = (d.width - 500)/2;
		int yPos = (d.height - 300)/ 2;
		dialog.setLocation(xPos, yPos);
		dialog.setSize(500, 300);
		dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		dialog.addKeyListener(this);
		dialog.setLayout(null);
		dialog.setVisible(true);
		dialog.setResizable(false);
		
		textArea.setBounds(0, 0, 294, 272);
		textArea.setText(textAreaData);
		textArea.setEditable(false);
		textArea.setLineWrap(true);
		textArea.setWrapStyleWord(true);
		dialog.add(textArea);

		ok.setBounds(300, 240, 187, 24);
		ok.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				ok_ActionPerformed(evt);
			}
		});
		dialog.add(ok);
		repaint();
		ok.addKeyListener(this);
		textArea.addKeyListener(this);
	}
	private void ok_ActionPerformed(ActionEvent evt) {
		close.closeThisFrame(dialog);
	}
	@Override
	public void keyPressed(KeyEvent e) {
		int key = e.getKeyCode();
		if(key ==KeyEvent.VK_ESCAPE){
			close.closeThisFrame(dialog);
		}
	}
	@Override
	public void keyReleased(KeyEvent arg0) {
		
	}
	@Override
	public void keyTyped(KeyEvent arg0) {
		
	}
}

mit adden meine ich, der dialog funktioniert an sich sehr gut, aber ich seh halt die objekte nichmehr :/
 

André Uhres

Top Contributor
- die Klasse "MyDialog" ist überflüssig
- die Variable "JDialog dialog;" ist ebenfalls überflüssig
- "dialog = new MyDialog(frame,true);" kannst du durch "super(frame, true);" ersetzen
- "dialog" kannst du durch "this" ersetzen
- this.setVisible(true) kommt erst zum Schluss vom Konstruktor !
- vom Nulllayout wird generell abgeraten
- eine JTextArea kommt üblicherweise in ein JScrollPane

Gruß,
André
 

tfa

Top Contributor
jedoch soll letzteres kein frame sein, sondern ein dialog. sprich, ich darf nichtmehr in das hauptprogramm(="main" frame) klicken können, bevor der "Info" dialog / frame geschlossen wurde.
Muss das so sein? Ich ärgere mich jedes mal, wenn ich von einer Software einen modalen Info-Dialog vorgesetzt bekomme. Ein nichtmodaler Dialog mit Owner-Frame sollte reichen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Bluedaishi JDialog modal und JTextArea AWT, Swing, JavaFX & SWT 4
N Swing Fragen zu non-modal JDialog AWT, Swing, JavaFX & SWT 1
A JDialog (modal) blockiert alle Fenster! AWT, Swing, JavaFX & SWT 2
B Swing JDialog modal, aber trotzdem Frame auswählbar AWT, Swing, JavaFX & SWT 2
J Swing Probmel mit JDialog (Modal/FocusLost/Button) AWT, Swing, JavaFX & SWT 5
K JDialog zeigt keine Komponenten wenn es modal ist AWT, Swing, JavaFX & SWT 2
G JDialog Modal? AWT, Swing, JavaFX & SWT 1
Luma JDialog anpassen unmöglich / JFrame modal machen? AWT, Swing, JavaFX & SWT 10
E JDialog mit count down timer AWT, Swing, JavaFX & SWT 1
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
A ViewController (IFrame) > Jdialog > Model AWT, Swing, JavaFX & SWT 1
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
L Swing JDialog ton beim klicken ausstellen AWT, Swing, JavaFX & SWT 1
L JDialog hat manchmal keinen Inhalt AWT, Swing, JavaFX & SWT 2
Drachenbauer Hauptfenster erhält schmale Streifen rechts unt unten, wenn ich einen JDialog hinzufüge. AWT, Swing, JavaFX & SWT 19
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
B Eingaben im JDialog abwarten AWT, Swing, JavaFX & SWT 4
S Swing JDialog mit KeyEvent als Rückgabe AWT, Swing, JavaFX & SWT 1
O Swing JDialog öffnen und dann warten bis er geschlossen wurde AWT, Swing, JavaFX & SWT 2
stylegangsta JDialog bestimmte Zeilen kursiv AWT, Swing, JavaFX & SWT 20
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
L KeyListener für JDialog AWT, Swing, JavaFX & SWT 7
T Event Handling JDialog schließen, sobald ein neuer erzeugt wird AWT, Swing, JavaFX & SWT 3
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16
D Button auf geöffnetem JDialog AWT, Swing, JavaFX & SWT 5
N Definitionen JDialog AWT, Swing, JavaFX & SWT 7
L JDialog - Event wenn Parent größe ändert AWT, Swing, JavaFX & SWT 2
Joew0815 JDialog repaint() funktioniert nicht wie gewünscht. AWT, Swing, JavaFX & SWT 2
D Swing Schließen von JDialog soll auch JFrame schließen. AWT, Swing, JavaFX & SWT 4
F Swing JDialog schließen - WindowListener bekommt dispose nicht mit AWT, Swing, JavaFX & SWT 0
N JDialog als Progress-Anzeige AWT, Swing, JavaFX & SWT 6
M JDialog statt JFrame AWT, Swing, JavaFX & SWT 22
I focus an ein jdialog geben AWT, Swing, JavaFX & SWT 3
3 JDialog über einem Vollbildfenster anzeigen AWT, Swing, JavaFX & SWT 5
M JDialog soll JFrame "blockieren" AWT, Swing, JavaFX & SWT 2
K JDialog zeigt Components nicht an AWT, Swing, JavaFX & SWT 3
S Jframe aus JDialog starten AWT, Swing, JavaFX & SWT 4
M JDialog übergibt eingaben nicht an aufrufende klasse AWT, Swing, JavaFX & SWT 15
S Assistent im JDialog AWT, Swing, JavaFX & SWT 7
H Swing JDialog cannot be resolved as a typ AWT, Swing, JavaFX & SWT 12
C Swing JDialog "flutet" den Arbeitsspeicher AWT, Swing, JavaFX & SWT 9
S Swing Eigenen JDialog mit Rückgabewert AWT, Swing, JavaFX & SWT 3
C Swing JDialog Ladebildschirm wird nicht angezeit AWT, Swing, JavaFX & SWT 5
Jagson Mit JMenu auf jDialog zurück? Wie? AWT, Swing, JavaFX & SWT 8
Jagson Swing Von JDialog zu anderem JDialog wechseln AWT, Swing, JavaFX & SWT 2
S JDialog direkt über dem MainFrame aufpoppen lassen AWT, Swing, JavaFX & SWT 2
A Swing JDialog KeyBindings und Textfelder AWT, Swing, JavaFX & SWT 5
D Daten von JDialog an JTable in JFrame übergeben AWT, Swing, JavaFX & SWT 7
D JDialog: immer nur einer gleichzeitig AWT, Swing, JavaFX & SWT 4
S JDialog per Button schließen AWT, Swing, JavaFX & SWT 2
D JDialog alwaysOnTop, aber nur innerhalb der Applikation AWT, Swing, JavaFX & SWT 3
J Swing JDialog blokiert mehrere JFrames - soll aber nur den aufrufenden blockieren AWT, Swing, JavaFX & SWT 4
S JDialog über Applet AWT, Swing, JavaFX & SWT 3
N Swing Klasse erbt von JDialog - Problem mit innerer ActionListener-Klasse AWT, Swing, JavaFX & SWT 6
J Swing JDialog gleichzeitig mit JFrame anzeigen AWT, Swing, JavaFX & SWT 8
S Probleme jDialog einfügen AWT, Swing, JavaFX & SWT 4
qwerqer Swing JDialog Darstellungsprobleme - Dialog lässt sich nicht schließen AWT, Swing, JavaFX & SWT 3
S Schrift ändern in JDialog AWT, Swing, JavaFX & SWT 3
S Problem mit JDialog AWT, Swing, JavaFX & SWT 3
D Elternfenster vom JDialog aktualisieren oder nicht ? AWT, Swing, JavaFX & SWT 7
hdi Swing Genaue Funktionsweise von modalem JDialog? AWT, Swing, JavaFX & SWT 11
U JDialog ohne Taskleiste AWT, Swing, JavaFX & SWT 7
S Programm pausieren während JDialog offen ist AWT, Swing, JavaFX & SWT 2
X JEditorPane Größe in JDialog automatisch anpassen AWT, Swing, JavaFX & SWT 2
Ollek JDialog Koponenten neu anordnen AWT, Swing, JavaFX & SWT 3
A JDialog AWT, Swing, JavaFX & SWT 10
Dit_ SwingUtilities.invokeLater und Modaler JDialog AWT, Swing, JavaFX & SWT 11
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A JDialog ausdrucken AWT, Swing, JavaFX & SWT 7
aze JDialog mit runden ecken AWT, Swing, JavaFX & SWT 8
Dit_ JDialog nur horizontal vergrößern AWT, Swing, JavaFX & SWT 3
C Swing JProgressBar in JDialog wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
M Swing Vererbung, Probleme mit JDialog AWT, Swing, JavaFX & SWT 12
S Swing Bild (Gif) in Bitte warten JDialog AWT, Swing, JavaFX & SWT 6
U JFrame minimiert nach JDialog, JOptionPane AWT, Swing, JavaFX & SWT 3
K Swing JDialog aus Frame ausrufen AWT, Swing, JavaFX & SWT 2
B JDialog über JFileChooser anzeigen AWT, Swing, JavaFX & SWT 6
B JDialog AWT, Swing, JavaFX & SWT 6
E Swing Fehlerhaftes Verhalten bei gleichzeitigen Verwendnen von PopUpMenu und JDialog?! AWT, Swing, JavaFX & SWT 5
J Swing JDialog mit static-Funktion anzeigen -> Rückgabewert AWT, Swing, JavaFX & SWT 3
E Daten von JDialog nach JFrame übertragen AWT, Swing, JavaFX & SWT 4
F ActionListener von JButton funktioniert mit JFrame aber nicht mit JDialog AWT, Swing, JavaFX & SWT 2
D Mehrere Comboboxen in JDialog AWT, Swing, JavaFX & SWT 2
F JDialog per Button schliessen - klappt nicht AWT, Swing, JavaFX & SWT 4
BattleMaster246 JDialog erscheint in der Taskbar AWT, Swing, JavaFX & SWT 7
H Sub-Dialog von modalem JDialog aus aufrufen - geht das? AWT, Swing, JavaFX & SWT 6
R Swing JDialog liefert immer false, 2 JListen verknüpfen AWT, Swing, JavaFX & SWT 3
P Swing eigenen Modalen JDialog AWT, Swing, JavaFX & SWT 6
J JDialog verliert Werte AWT, Swing, JavaFX & SWT 3
N Variablen an JDialog übergeben AWT, Swing, JavaFX & SWT 2
P Swing JDialog schliesst nicht AWT, Swing, JavaFX & SWT 2
X Swing JDialog von JInternalFrames überlappen lassen AWT, Swing, JavaFX & SWT 2
O JDialog-JScrollPane-JTable Problem AWT, Swing, JavaFX & SWT 3
N Swing Frage zu modalem JDialog. AWT, Swing, JavaFX & SWT 16
A JFrame oder JDialog AWT, Swing, JavaFX & SWT 12
B Swing JDialog : Herausfinden wie dieser beendet wurde? AWT, Swing, JavaFX & SWT 2
T JDialog ohne Fenstermanager? AWT, Swing, JavaFX & SWT 2
S JDialog in der Taskbar anzeigen AWT, Swing, JavaFX & SWT 3
A Swing JFrame Werte aus JDialog übergeben AWT, Swing, JavaFX & SWT 4
K Swing JDialog ohne Titlebar mit Rahmen AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben