# JFrame bleibt grau



## Felix (25. Feb 2006)

Hi,
mein JFrame bleibt einfach grau. Ein ähnliches Problem hatte ich schon einmal, damals hatte ich show() (nun setVisible(true)) vor setSize(int,int) aufgerufen. Diesen Fehler habe ich diesmal nicht gemacht.

Keine Ahnung, was ich jetzt schon wieder falsch gemacht habe. Könnt ihr es mir vielleicht sagen?


```
//Titel setzen
		this.setTitle("Gespräch");
		
		//GUI anordnen
		this.getContentPane().setLayout(new BorderLayout());
		this.getContentPane().add(BorderLayout.CENTER, outTextPane);
		this.getContentPane().add(BorderLayout.SOUTH, southPanel);
		
		southPanel.setLayout(new GridLayout(2,1));
		southPanel.add(inText);
		southPanel.add(buttonPanel);
		
		buttonPanel.add(exit);
		buttonPanel.add(send);
		
		//zu Listener hinzufügen
		send.addActionListener(this);
		exit.addActionListener(this);
		
		//Größe setzten und sichtbar machen
		this.setSize(300,200);
		this.setVisible(true);
```

Gruß
der Felix


----------



## AlArenal (25. Feb 2006)

```
this.getContentPane().add(BorderLayout.CENTER, outTextPane);
		this.getContentPane().add(BorderLayout.SOUTH, southPanel);
```

Dass du das kompiliert bekommen haben willst, ist mir ein Rätsel, aber die Exceptions sollten dir zu denken geben...



			
				java.awt.Container hat gesagt.:
			
		

> add(Component comp, Object constraints)


----------



## Felix (25. Feb 2006)

Ich mach das immer so, was ist daran falsch?


----------



## AlArenal (25. Feb 2006)

Na, steht doch da! Die Reihenfolge der Parameter...


----------



## Felix (25. Feb 2006)

wie schon gesagt, ich mach das immer so, und andersrum gehts auch nicht...


----------



## AlArenal (25. Feb 2006)

java.awt.Container hat gesagt.:
			
		

> public Component add(String name, Component comp)
> 
> Adds the specified component to this container.
> This is a convenience method for
> ...



Weiter solltest du dir angewöhnen Komponenten erst fertig zusammenzustellen, ehe du die in andere reinpackst.


----------



## Felix (25. Feb 2006)

Jetzt hab ichs so:


```
//GUI anordnen
		this.getContentPane().setLayout(new BorderLayout());
		this.getContentPane().add(outTextPane, BorderLayout.CENTER);
		
		southPanel.setLayout(new GridLayout(2,1));
		southPanel.add(inText);
		southPanel.add(buttonPanel);
		this.getContentPane().add(southPanel, BorderLayout.SOUTH);	
		
		buttonPanel.add(exit);
		buttonPanel.add(send);
		
		
		//zu Listener hinzufügen
		send.addActionListener(this);
		exit.addActionListener(this);
		
		//Größe setzten und sichtbar machen
		this.setSize(300,200);
		this.setVisible(true);
```

und es geht immer noch nicht...  ???:L  ???:L


----------



## Beni (25. Feb 2006)

Also bei mir funktioniert das: kannst du mal mit deinem vergleichen. Hast du vielleicht irgendwelche Exceptions? Benutzt du die Komponenten an einer anderen Stelle ein zweites mal?


```
import java.awt.BorderLayout;
import java.awt.GridLayout;

import javax.swing.*;

public class Test3 extends JFrame{
    public static void main( String[] args ) {
        new Test3();
    }
    
    private JButton exit = new JButton( "exit" );
    private JButton send = new JButton( "send" );
    
    private JPanel buttonPanel = new JPanel();
    private JPanel southPanel = new JPanel();
    
    private JTextField inText = new JTextField();
    private JTextPane outTextPane = new JTextPane();
    
    public Test3(){
        this.getContentPane().setLayout(new BorderLayout());
        this.getContentPane().add(outTextPane, BorderLayout.CENTER);
        
        southPanel.setLayout(new GridLayout(2,1));
        southPanel.add(inText);
        southPanel.add(buttonPanel);
        this.getContentPane().add(southPanel, BorderLayout.SOUTH);   
        
        buttonPanel.add(exit);
        buttonPanel.add(send);
        
        
        //Größe setzten und sichtbar machen
        this.setSize(300,200);
        this.setVisible(true);
    }
}
```


----------



## Felix (25. Feb 2006)

hm, so funktioniert es bei mir auch, aber warum nicht anders?


----------



## Ralf Ueberfuhr (25. Feb 2006)

Kann es eventuell sein, dass du die Anweisungen von oben in einer initGUI()-Methode stehen hast, diese aber im Konstruktor nicht aufrufst?


----------



## Felix (25. Feb 2006)

die Anweisung steht im Konstruktor, wird also zwangsläufig aufgerufen...

Ich habe gerade festgestellt, dass alles was noch übrigbleibt (also nur das outTextPane) angezeigt wird, wenn ich diese Zeile lösche:


```
this.getContentPane().add(southPanel, BorderLayout.SOUTH);
```

woran könnt dies liegen?


----------



## Felix (25. Feb 2006)

Wenn man das southPanel einfach ind ContendPane einsetzt dann funktioniert es auch :?


----------



## André Uhres (25. Feb 2006)

:idea:  Ich schlage vor du machst ein KSKB in dem der Fehler vorkommt. 
Wenn du dann den Fehler immer noch nicht findest, dann kannste ja das KSKB posten.


----------



## Felix (25. Feb 2006)

inText war eine JTextArea die ich ohne JScrollPane eingefügt habe, dies hat wohl das Problem verursacht, denn nun ist inText ein JTextField und das Problem ist behoben...


----------



## L-ectron-X (25. Feb 2006)

Problem gelöst?

Haken dran! :wink:


----------



## Felix (25. Feb 2006)

ja, scheint so  , aber damit euch nicht langweilig wird, hab ich ein ähnliches Problem nochmal:

Ich habe ein InfoDialog programmiert, wenn ich ihn so aufrufe:


```
id = new InfoDialog("Sie werden am System angemeldet...");
```

dann erscheint der Text, wenn ich ihn allerding so aufrufe:


```
id = new InfoDialog("Sie werden von System abgemeldet...");
```

erscheint der Text nicht...

Hier ist der Code:


```
public class InfoDialog extends JDialog {
	JLabel Anzeige = new JLabel();

	public InfoDialog(String s) {
		setTitle("[pt4a] ChatSystem");

		setSize(350, 60);
		Anzeige.setText(s);
		getContentPane().setLayout(new FlowLayout());
		getContentPane().add(Anzeige);
		repaint();

		// Fenster mittig anzeigen
		this.setLocationRelativeTo(null);
		setVisible(true);
	}

	public void setText(String s){
		Anzeige.setText(s);
		this.repaint();
	}
}
```

Kann mir das einer erklären, ich verstehs nicht...

Gruß
der Felix


----------



## lin (25. Feb 2006)

haeh? 
liegt wahrscheinlich an dem Dativ-Fehler :bae:


----------



## Felix (25. Feb 2006)

upps, hehe 

hm, aber jetzt mal ehrlich, seltsam oder?


----------



## Beni (25. Feb 2006)

Junge, du solltest vielleicht mal dein System neu aufsetzen :lol:

Funktioniert bei mir einwandfrei


----------



## Felix (25. Feb 2006)

dann liegt es also an meinem System, nicht an mir...  (bin ich beruhigt...)

ok, dann mal danke an alle und ich werde es übermorgen an 7 anderen (windows-) systemen testen und dann schreiben ob es wirklich an meinem System liegt oder an dem Code, der diesen JDialog aufruft...

Gruß
der Felix


----------



## lin (26. Feb 2006)

> ok, dann mal danke an alle und ich werde es übermorgen an 7 anderen (windows-) systemen testen und dann schreiben ob es wirklich an meinem System liegt oder an dem Code, der diesen JDialog aufruft...


hm.. ich glaube da reicht ein anderes System :wink:
bei mir funzt das auch..


----------



## André Uhres (26. Feb 2006)

Felix hat gesagt.:
			
		

> ...wenn ich ihn allerding so aufrufe:
> 
> ```
> id = new InfoDialog("Sie werden von System abgemeldet...");
> ...


Am Text kann es ja wohl kaum liegen. 
Es liegt also wahrscheinloich an der Stelle wo du den Dialog aufrufst.
Kann es ein, daß der Dialog sich hinter einem anderen Frame verbirgt? ..


----------



## Felix (26. Feb 2006)

ne, der dialog ist ja da, aber der Text erscheint nicht...

daran dass ich ihn zum 2. mal aufrufe liegt es auch nciht, denn wenn ich das 1. mal weglassen erscheint der Text auch nicht. Wenn ich den Text in ein JTextField einfüge erscheint beim ersten mal der Text mit dem JTextField, beim 2. mal erscheint der JTextField nicht im Dialog...


seltsam... ich denke es liegt an dem Code, der den Dialog aufruft...


----------



## lin (26. Feb 2006)

wo bitte ist da der Unterschied

"Sie werden am System angemeldet..."
"Sie werden von System abgemeldet..."

liegt ja wohl kaum am Text...


----------



## André Uhres (26. Feb 2006)

Wenn du die beiden Aufrufe vertauschst, dann erscheint wahrscheinlich der Text "..abgemeldet.." und der andere nicht. 
Folglich liegt es nicht an dem Code der den Dialog aufruft, sondern daran *wo* du ihn aufrufst..


----------

