Frage zu inaktiven Fenstern

Status
Nicht offen für weitere Antworten.

Herr.Jth

Mitglied
Hallo,
erster Post, hoffentlich alles ok so ;)

Ich habe ein Problem bzw. eine Frage zu inaktiven Frames. Zum Beispiel wird, wenn ich einen MessageDialog anzeige, der Parent-Frame inaktiv und nichtmehr benutzbar. Ich frage mich wie ich dieses Verhalten übertragen kann. Die Situation ist derzeit so: Ich habe ein Projekt mit einem Hauptfenster (JFrame), indem sich allerdings nach betätigen eines bestimmten Buttons ein anderes Fenster öffnet, das eine Eingabe erwartet. Ich möchte nun erreichen dass das Parent-Fenster nichtmehr auf Benutzereingaben reagiert, solange dass Eingabe-Fenster offen ist.
Eine 2. Sache die direkt damit zusammenhängt ist noch, dass mir nicht ganz klar ist wie ich die erfolgte Eingabe (in diesem Fall ein String) an das Hauptfenster zurückgeben kann. Eigentlich müsste es ja ein Signal geben wie "Ich bin fertig und habe die Eingabe, mach du jetzt weiter mit der Eingabe", allerdings bin ich etwas ratlos wie ich das umsetzen soll ???:L

Danke im vorraus für Tips, bin gerade wirklich ratlos was das angeht.
 

Herr.Jth

Mitglied
Ich habe das ganze jetzt so "gelöst":

Code:
private void addButtonActionPerformed(ActionEvent evt) {
    this.setEnabled(false);
    AddPersonWindow aw = new AddPersonWindow();
   //this.setEnabled(true);        
}

Funktioniert zwar, aber offenbar laufen das Hauptfenster und das neue "AddPersonWindow" in 2 Threads ab, d.h. sofort nachdem AddPersonWindow instanziiert wurde, wird das Hauptfenster auch schon wieder aktiviert.

Ehrlichgesagt bin ich ziemlich ratlos wie ich es schaffen kann dem Hauptfenster mitzuteilen dass "aw" fertig ist und die geforderten Daten zur Verfügung stehen, d.h. dass das Hauptfenster erst weiterläuft wenn der Nutzer in "aw" OK gedrückt hat. Analog dazu müsste ich die Daten auch irgendwie von "aw" zum Elternfenster befördern... Hat da jemand evt. einen Denkanstoss für mich?

Danke im vorraus :)
 

mikachu

Top Contributor
Herr.Jth hat gesagt.:
Ich habe das ganze jetzt so "gelöst":

Code:
private void addButtonActionPerformed(ActionEvent evt) {
    this.setEnabled(false);
    AddPersonWindow aw = new AddPersonWindow();
   //this.setEnabled(true);        
}

Funktioniert zwar, aber offenbar laufen das Hauptfenster und das neue "AddPersonWindow" in 2 Threads ab, d.h. sofort nachdem AddPersonWindow instanziiert wurde, wird das Hauptfenster auch schon wieder aktiviert.
ist klar... das addpersonwindow-objekt wird instantiiert und gut -> anweisung beendet, weiter mit der nächsten

Herr.Jth hat gesagt.:
Ehrlichgesagt bin ich ziemlich ratlos wie ich es schaffen kann dem Hauptfenster mitzuteilen dass "aw" fertig ist und die geforderten Daten zur Verfügung stehen, d.h. dass das Hauptfenster erst weiterläuft wenn der Nutzer in "aw" OK gedrückt hat. Analog dazu müsste ich die Daten auch irgendwie von "aw" zum Elternfenster befördern... Hat da jemand evt. einen Denkanstoss für mich?

Danke im vorraus :)
hab ich immer so gelöst:
Code:
class Foo
{
    private Bar _itsBar;

    public Foo( Bar bar ){ _itsBar = bar; }
}
class Bar
{
    public Bar(){}
}
public static void main( String... args )
{
    Bar eingenisted = new Bar();
    Foo nest = new Foo( eingenisted );
}
 

Herr.Jth

Mitglied
Vielen Dank für deine Antwort, ich glaube ich habe es jetzt (zumindest theoretisch...)

Meine Idee war jetzt wie folgt:

Code:
	private void addButtonActionPerformed(ActionEvent evt) {
		this.setEnabled(false);
		Bar nested = new Bar();
		AddPersonWindow aw = new AddPersonWindow(nested);
		
		 do {
			try {
				Thread.sleep(500);
			} catch(Exception E) {
				System.out.println("Sleep failed. Exiting...");
				System.exit(1);
			}
			System.out.println("Daten nicht ok");
		} while(!nested.dataOK());
		
		System.out.println("Daten ok");
		aw.dispose();
		// Daten abholen und damit arbeiten...
		this.setEnabled(true); 
	}

Ich wollte jetzt solange eine while-schleife laufen lassen, bis die Eingabe in Ordnung ist. Die Textausgabe in der while-schleife dient nur dem debugging, bis auf die im Extremfall grösste Verzögerung von 500ms sollte der Anwender davon eigentlich nichts mitbekommen.

Allerdings ist aw jetzt nur noch ein graues Fenster. Die Größe stimmt zwar, aber alle Schaltflächen etc. sind weg. Ich habe mal einen Screenshot gemacht, 20kb: Fehler-Bild.

Hat jemand eine Idee woran das liegen könnte? Eigentlich fällt mir kein Grund ein warum das Fenster nicht funktionieren sollte, denn ohne die while-Schleife in der Methode funktioniert es wunderbar.

java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Server VM (build 1.6.0-b105, mixed mode)

Wobei ich mir eigentlich nicht vorstellen kann dass es sich dabei um einen Bug in der VM handelt... aber man weiss ja nie ;)
 

Herr.Jth

Mitglied
Ich schiebe hier nochmal, evt. hat noch jemand eine Idee.

An der VM liegt es wohl definitiv nicht, das Programm verhält sich bisher überall gleich wo ich es getestet habe. Selbst wenn ich einen Methoden-Sprung nach dem erzeugen des AddPersonWindow-Objektes mache, ändert sich das Verhalten nicht. Mir ist absolut unerklärlich wieso diese while-Schleife das Zeichnen der Fensterkomponenten verhindert. Auch eine Endlosschleife wie
Code:
for(;;){ }
oder auch nur eine simple Sleep-Anweisung nach dem instanziieren des Objektes bringt nichts, es tritt immer das Verhalten auf, welches auf dem Bild zu sehen ist. Aber eigentlich ist doch ein Fehler in der AddPersonWindow-Klasse auszuschliessen, da es ohne die while-Schleife perfekt funktioniert....
Ich bin mit meinem Latein wirklich am Ende, vielleicht hat jemand noch eine Idee...
 

André Uhres

Top Contributor
Herr.Jth hat gesagt.:
..Ich möchte nun erreichen dass das Parent-Fenster nichtmehr auf Benutzereingaben reagiert,
solange dass Eingabe-Fenster offen ist.
Eine 2. Sache die direkt damit zusammenhängt ist noch, dass mir nicht ganz klar ist wie ich die erfolgte Eingabe
(in diesem Fall ein String) an das Hauptfenster zurückgeben kann..
Code:
package dialog;
/*
 * DataEntryDemo.java
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DataEntryDemo extends JFrame {
    private JButton btEntry;
    private DataEntryDialog dataEntryDialog;
    private JLabel lb1, lb2;
    private JPanel mainPanel;
    public DataEntryDemo() {
        super("Data Entry Demo");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(400,300);
        setLocationRelativeTo(null);
        btEntry = new JButton("Data Entry");
        lb1 = new JLabel();
        lb2 = new JLabel();
        mainPanel = new JPanel();
        getContentPane().add(btEntry, BorderLayout.NORTH);
        mainPanel.add(lb1);
        mainPanel.add(lb2);
        getContentPane().add(mainPanel, BorderLayout.CENTER);
        dataEntryDialog = new DataEntryDialog(this, true);
        btEntry.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent evt) {
                btEntryActionPerformed(evt);
            }
        });
    }
    private void btEntryActionPerformed(final ActionEvent evt) {
        dataEntryDialog.setVisible(true);
        lb1.setText(dataEntryDialog.getFirstName().getText());
        lb2.setText(dataEntryDialog.getLastName().getText());
    }
    public static void main(final String args[]) {new DataEntryDemo().setVisible(true);}
}
/*
 * DataEntryDialog
 */
class DataEntryDialog extends JDialog {
    private JPanel mainPanel;
    private JTextField firstName, lastName;
    private JLabel firstNameLabel, nameLabel;
    public DataEntryDialog(Frame parent, boolean modal) {
        super(parent, "Data Entry Dialog", modal);
        setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
        mainPanel = new JPanel();
        firstNameLabel = new JLabel("First Name: ");
        firstName = new JTextField();
        nameLabel = new JLabel("Name: ");
        lastName = new JTextField();
        firstNameLabel.setPreferredSize(new Dimension(100, 22));
        mainPanel.add(firstNameLabel);
        firstName.setPreferredSize(new Dimension(120, 22));
        mainPanel.add(firstName);
        nameLabel.setPreferredSize(new Dimension(100, 22));
        mainPanel.add(nameLabel);
        lastName.setPreferredSize(new Dimension(120, 22));
        mainPanel.add(lastName);
        getContentPane().add(mainPanel, BorderLayout.CENTER);
        pack();
        setLocationRelativeTo(parent);
    }
    public JTextField getLastName() {return lastName;}
    public JTextField getFirstName() {return firstName;}
}
Wenn du unbedingt ein modales Fenster simulieren willst, hier ein Beispiel:
DialogWithIconDemo
http://forum.java.sun.com/thread.jspa?forumID=57&threadID=786553
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Swing Frage zu jDialog AWT, Swing, JavaFX & SWT 7
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 10
MJannek Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
D Frage zu ActionListenern und AvtionEvents AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
F JavaFX Frage zum Logging AWT, Swing, JavaFX & SWT 6
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
J Frage zu setuserdata AWT, Swing, JavaFX & SWT 1
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
T JavaFX Frage zum FX-Loader AWT, Swing, JavaFX & SWT 3
B drawRect Frage und Aufgabenstellung AWT, Swing, JavaFX & SWT 10
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
S Frage zu java.awt.EventQueue AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Frage zum Loggen von Fehlern AWT, Swing, JavaFX & SWT 3
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q Cursor Frage AWT, Swing, JavaFX & SWT 8
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
X Kurze Frage zu JPopup AWT, Swing, JavaFX & SWT 3
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
J Swing Frage zur Vorgehensweise (JTable?, JLabels?) AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
D MVC Frage AWT, Swing, JavaFX & SWT 6
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
M Frage zu Threads AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Frage AWT, Swing, JavaFX & SWT 5
Luk10 g.drawString funktioniert nicht + Frage zur Text-Rendering Qualität AWT, Swing, JavaFX & SWT 7
Luk10 Frage zu Farb-Komposition AWT, Swing, JavaFX & SWT 9
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
V SWT Import Wizard - frage zur WizardPage AWT, Swing, JavaFX & SWT 5
N Swing Frage JXMapviewer AWT, Swing, JavaFX & SWT 4
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
H Frage zu übergebenem Vector bzw. Boolean AWT, Swing, JavaFX & SWT 3
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
VfL_Freak Swing Frage zu "new JPasswordField( 10 )" AWT, Swing, JavaFX & SWT 6
H Frage zu WindowBuilder Pro AWT, Swing, JavaFX & SWT 3
C Frage/Problem mit Jpanel AWT, Swing, JavaFX & SWT 4
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
GUI-Programmer Zeichnen in Swing - Frage AWT, Swing, JavaFX & SWT 6
Luk10 Frage zu Mouseevents AWT, Swing, JavaFX & SWT 7
J Refreshing Swing Frage AWT, Swing, JavaFX & SWT 10
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
A Frage zu StringBuilder AWT, Swing, JavaFX & SWT 2
S allg. Frage zur GUI-Architektur AWT, Swing, JavaFX & SWT 5
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
H Allgemeine Frage zu Grafikfähigkeiten von Java AWT, Swing, JavaFX & SWT 24
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
Jats Frage zu JLabel & JTextField AWT, Swing, JavaFX & SWT 4
Y frage zu BufferedImage AWT, Swing, JavaFX & SWT 7
hdi Swing Frage zu invokeAndWait() Exceptions AWT, Swing, JavaFX & SWT 8
P Swing Frage zu paintComponent/getGraphics AWT, Swing, JavaFX & SWT 4
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3
S Frage zu Graphics2D AWT, Swing, JavaFX & SWT 3
T AWT Frage zu AWT AWT, Swing, JavaFX & SWT 5
B Frage zu Swing,Threads, SwingWorker und Socket Communikation AWT, Swing, JavaFX & SWT 4
F unspezifizierte Frage zu JTable/ Model AWT, Swing, JavaFX & SWT 6
B SWT Frage zu MVC und Data-Binding AWT, Swing, JavaFX & SWT 8
T LookAndFeel Look and Feel Frage AWT, Swing, JavaFX & SWT 2
J Java2D Kreis/Kurven Frage AWT, Swing, JavaFX & SWT 2
P Kurze Frage zur Gestaltung eines vertikalen Menüs AWT, Swing, JavaFX & SWT 2
Dit_ Frage zum Thema SwingUtilities.invokeLater AWT, Swing, JavaFX & SWT 5
Eldorado Frage zur Anwendung des MVC-Konzept AWT, Swing, JavaFX & SWT 33
G Frage zu processMouseEvent AWT, Swing, JavaFX & SWT 6
M Zoomen in ein JPanel... und eine andere kleine Frage AWT, Swing, JavaFX & SWT 3
D Swing implementierungs-technische Frage zu JList/AbstractListModel AWT, Swing, JavaFX & SWT 7
C Event Frage AWT, Swing, JavaFX & SWT 7
A Frage zu GridLayout AWT, Swing, JavaFX & SWT 4
F Frage zu WindowListeners AWT, Swing, JavaFX & SWT 2
E einfache Frage:warum ist Hintergrund grau ? AWT, Swing, JavaFX & SWT 24
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
C Frage zu ActionListenern AWT, Swing, JavaFX & SWT 7
D Frage @ someActionEvent.getActionCommand() AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben