JDialog resize zur Laufzeit PROBLEM!!!

superping

Aktives Mitglied
Hallo zusammen!

Nach mittlerweile unzähligen Tagen des rumprobierens hier mein Problem:

Ich möchte ein JDialog erzeugen der einen "Detail" Button hat. Wenn man auf den draufklickt, soll sich der JDialog vergrössern und das bestehende JPanel (mit neuen setBounds Werten) soll sich neu zeichnen.

Das ganze ist irgendwie total vermurkst. Habe das schonmal hinbekommen, dass beides funktionierte NUR beim 2. Aufruf von dem ganzen war nach dem Buttonklick ein leerer JDialog zu sehen. Hat also nur jeweils einmal funktioniert.

Hat jemand eine Idee oder besser sowas schonmal gemacht?

Hier mein code:

Java:
public class Main extends JFrame {...

public JDialog tnDialog;

public Main() {...

tnPanel = new TourNeu();
                  
                  }

ActionListener tnTour = new ActionListener () // Hier wird der JDialog erzuegt
     {
               public void actionPerformed (ActionEvent evt)
               {
               tnDialog = new JDialog(fensterNeu,"Neue Tour Anlegen", false);
               
               TourNeu.y = 0;
               
               tnDialog.add(tnPanel.getJPanelConnection());               
               tnPanel.setJPanelConnection(true);

               tnPanel.repaint();
               tnPanel.revalidate();
               tnPanel.setVisible(true);

               tnDialog.setBounds(190,130,682,530);

               tnDialog.repaint();
               }
     };

ActionListener dTour = new ActionListener(){      // Hier soll der JDialog vergrössert werden
                    public void actionPerformed(ActionEvent e){

                        tnDialog.remove(tnPanel.getJPanelConnection());
                        tnPanel.setJPanelConnection(false);
                        
                        TourNeu tnPanel2 = new TourNeu();
                        TourNeu.y = 60;
                        tnDialog.setSize(682, 590);

                        tnDialog.add(tnPanel2.getJPanelConnection());
                        tnPanel2.setJPanelConnection(true)

                        tnPanel2.setVisible(true);
                        tnPanel2.repaint();
                        tnDialog.repaint();
                        fensterNeu.repaint();

                    }
                    };

Und hier die Klasse mit dem Panel:

Java:
public class TourNeu extends JPanel {...

public static int y;

public void setJPanelConnection(boolean x)
	{
		tNPanel.setVisible(x);
	}

public static JPanel tNPanel;

public JPanel getJPanelConnection() {
        if(tNPanel != null) {
             tNPanel = null;}
        if(tNPanel == null) {

           tNPanel = new JPanel();

           tNPanel.setLayout(null);
           tNPanel.setBounds(10,10,688,556+y);
           tNPanel.setVisible(true);
    }
    return tNPanel;
    }

Ich weiss, dass das alles eher grausam aussieht. Halt alles (krampfhaft) versucht.

Bin dankbar für jede Hilfe!
 

javimka

Top Contributor
Hast du schon versucht, am Ende der Methode actionPerformed validat() aufzurufen? Wieso erbt TourNeu von JPanel, wenn du dann doch nur die Komponente von getJPanelConnection() verwendest? Und warum erstellt getJPanelConnection jedesmal ein neus JPanel?
 

Quaxli

Top Contributor
Mal ein kleines Beispiel mit Buttons:

Code:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Bsp extends JDialog implements ActionListener{

	private static final long	serialVersionUID	= 1L;

	public static void main(String[] args){
		new Bsp();
	}
	
	public Bsp(){
		setTitle("Example");
		setLocation(100,100);
		setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		setLayout(new FlowLayout());
		
		JButton button1 = new JButton("Drück mich");
		button1.setActionCommand("action");
		button1.addActionListener(this);
		add(button1);
		
		pack();
		setVisible(true);
		
		
	}

	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand().equals("action")){
			add(new JButton("ohne Funktion"));
      pack();
		}
		
	}
	
}

In dem Fall macht der pack() das Gleiche wie der von javimka vorgeschlagene validate() (vgl. API).
Wenn Du immer noch Probleme hast, schreib Dir erst mal ein kleines Beispielprogramm und versuche es dort.
 

superping

Aktives Mitglied
Hi,

validate() funktioniert nicht. Keine Reaktion drauf. Wieso TourNeu von JPanel erbt? Gute Frage... ^^

Es muss (offensichtlich) jedes mal ein neues JPanel erzeugt werden. Wenn ich das weg lasse hab ich einen leeren JDialog. Das mit dem neu zeichnen hab ich aus einem bspl. aus dem Forum.

Noch eine Idee?
 

javimka

Top Contributor
Was genau erwartest du denn im Dialog. Wenn du nur ein leeres JPanel hinzufügst, siehst du es ja nicht, dann scheint der Dialog leer zu sein. Du kannst ja mal statt einem JPanel einen JButton verwenden, den sieht man auf jeden Fall.

Die Methode getJPanelConnection solltest du unbedingt mal aufräumen. Die ganzen Vergleiche mit null bringen doch nichts und setVisible ist auch nicht nötig.

Übrigens nützt es nur setBounds zu verwenden, wenn das Parent der Komponente keinen LayoutManager hat. Sonst legt nämlich dieser die "Bounds" der Komponente fest. Du fügst das getJPanelConnection() Objekt der tnDialog hinzu. Hat die tnDialog denn auch das Layout null?
 

superping

Aktives Mitglied
Das JPanel ist natürlich nicht leer. Da sind ca. 30 Textfelder, ComboBoxen, RadioButtons, Icons usw. drin. Hatte ich nur weggelassen.

Das mit der Methode getJPanelConnection gehe ich auf jeden Fall mal an. Das ist wirklich unsinn.

Das mit setBounds weiss ich. Es haben alle Komponenten ein null Layout. Da muss ich denn setBounds & setVisible (meistens jedenfalls) angeben.

Davon mal ab: es funktioniert!!! Manchmal braucht man nur ein paar Anregungen von "aussen". Mein 2 Wochen Problem löste sich wie folgt:

Java:
// der Listener der den JDialog vergrössert //

ActionListener dTour = new ActionListener(){
                    public void actionPerformed(ActionEvent e){

                        tnPanel.setJPanelConnection(false);

                        TourNeu.y = 60;
                        tnDialog.setSize(682, 590);

                        tnDialog.add(tnPanel.getJPanelConnection());
                        tnPanel.setJPanelConnection(true);

                        tnPanel.setVisible(false);
                        tnPanel.repaint();
                        tnDialog.repaint();
                        fensterNeu.repaint();
...

So lässt sich das JPanel hin und her vergrössern (bzw. verkleinern). Coole Sache!!!

Danke allen - vor allem Javimka für die Tipps!

...mach mich dann mal an das nächste Problem: fadende, animierte JPanel... :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
H JDialog Problem Java Basics - Anfänger-Themen 10
H Problem JDialog.setVisible Java Basics - Anfänger-Themen 3
T Modales JDialog schliessen mit JButton Java Basics - Anfänger-Themen 2
I JDialog Problem Java Basics - Anfänger-Themen 37
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
Y resize von images Java Basics - Anfänger-Themen 1
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
I Resize Image - Einlesen von InputStream Java Basics - Anfänger-Themen 3
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
A Resize-Fehler (nur) beim waagrecht Verkleinern Java Basics - Anfänger-Themen 5
U GUI - resize frame Java Basics - Anfänger-Themen 13
S Java 2d resize unterdrücken! Java Basics - Anfänger-Themen 9
D Window resize Event ? Java Basics - Anfänger-Themen 5
J .resize . getScreenSize() ); - Taskleiste Java Basics - Anfänger-Themen 4
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
E Alter (Laufzeit) berechnen Java Basics - Anfänger-Themen 11
W Array zur Laufzeit bearbeiten? Java Basics - Anfänger-Themen 31
D Objekterzeugungen mit zur Laufzeit variierenden Attributen Java Basics - Anfänger-Themen 7
J GroupLayout zur Laufzeit erweitern Java Basics - Anfänger-Themen 1
B Übersetzungszeit und Laufzeit Java Basics - Anfänger-Themen 3
amgadalghabra Die vier Sortieralgorithmen die durchschnittliche Laufzeit in Millisekunden Java Basics - Anfänger-Themen 37
U Dijkstra Algorithmus Laufzeit Java Basics - Anfänger-Themen 3
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
S Interpreter-Fehler Endlosschleife zur Laufzeit aber warum? Java Basics - Anfänger-Themen 15
J JavaFX Label,Button zur Laufzeit Java Basics - Anfänger-Themen 30
H Laufzeit Java Basics - Anfänger-Themen 11
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
L Objekt Typ zur Laufzeit ermitteln Java Basics - Anfänger-Themen 1
J Datei im Package zur Laufzeit editieren Java Basics - Anfänger-Themen 1
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 5
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 0
R Objekte zur Laufzeit in Schleife erzeugen und in ArrayList ablegen Java Basics - Anfänger-Themen 4
C Laufzeit von Stack Operation Java Basics - Anfänger-Themen 5
D Laufzeit von einfachem Programm Java Basics - Anfänger-Themen 21
J Laufzeit berechnen/Laufzeitanalyse Java Basics - Anfänger-Themen 2
M Input/Output Datei in Laufzeit-JAR kopieren Java Basics - Anfänger-Themen 6
V Laufzeit Java Basics - Anfänger-Themen 23
G Laufzeit/ O/Θ-Notation einer Treeset Methode Java Basics - Anfänger-Themen 0
W Klassen [GELÖST] Objekte während der Laufzeit mit neuen veränderten Werten beliebig oft initialisieren Java Basics - Anfänger-Themen 2
M Erste Schritte Code zur Laufzeit ändern lassen Java Basics - Anfänger-Themen 3
C Klassen aus einem Package ermitteln und per Laufzeit laden Java Basics - Anfänger-Themen 17

Ähnliche Java Themen

Neue Themen


Oben