# JFrame nicht in Taskbar zeigen



## Djinndrache (15. Jul 2008)

Hallo,

gibt es eine Möglichkeit, dass ich einen JFrame nicht in der Taskbar anzeigen muss? Mich stört es ein wenig, dass auch der AboutDialog von mir in der Taskbar nochmal angezeigt wird, obwohl das ja nur ein mini-teil des Programms ist. Würd das Ding daher gern nicht in der Taskleiste anzeigen


----------



## dirty-mg (15. Jul 2008)

Nimm einen JDialog und kein JFrame ...


----------



## The_S (15. Jul 2008)

Und in deinem Fall würde ich den JDialog dann wohl modal machen und einen Owner übergeben.


----------



## dirty-mg (15. Jul 2008)

Sehr gute Idee ;-)


----------



## Djinndrache (15. Jul 2008)

Hört sich nach viel Arbeit an, wenn ich jetzt von Frame auf Dialog umschreiben will  Mal sehn


----------



## Djinndrache (15. Jul 2008)

Hab jetzt nen JDialog statt nem JFrame und immernoch stehts in der Taskbar...


----------



## The_S (16. Jul 2008)

Ist nicht viel Arbeit und nein, es ist nicht in der Taskbar!

Zeig mal Code.


----------



## Djinndrache (16. Jul 2008)

Viel Arbeit war es tatsächlich nicht, aber in der Taskleiste ist es dennoch.

Hier der Code des Dialogs


```
JDialog aboutDialog;

	JPanel aboutPanel;

	JLabel aboutContent;

	Dimension aboutDimension;

	JButton aboutButtonClose;

	public void showAboutDialog() {
		aboutDimension = new Dimension();
		aboutDimension.width = 210;
		aboutDimension.height = 240;
		screenCenter = new Point();
		screenCenter.x = (Toolkit.getDefaultToolkit().getScreenSize().width / 2)
				- (aboutDimension.width / 2);
		screenCenter.y = (Toolkit.getDefaultToolkit().getScreenSize().height / 2)
				- (aboutDimension.height / 2);
		aboutContent = new JLabel();
		aboutContent.setText(LANG.ABOUT_CONTENT);
		aboutButtonClose = new JButton();
		aboutButtonClose.setText(LANG.ABOUT_CLOSE);
		aboutButtonClose.setIcon(new ImageIcon(ClassLoader
				.getSystemResource("images/button_close.png")));
		aboutButtonClose.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				aboutDialog.dispose();
			}
		});
		aboutPanel = new JPanel();
		aboutPanel.add(aboutContent);
		aboutDialog = new JDialog();
		aboutDialog.setTitle(Quiz.TITLE);
		aboutDialog.setAlwaysOnTop(true);
		aboutDialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		aboutDialog.setResizable(false);
		aboutDialog.setLayout(new BorderLayout(2, 1));
		aboutDialog.setPreferredSize(aboutDimension);
		aboutDialog.setLocation(screenCenter);
		aboutDialog.setIconImage((new ImageIcon(ClassLoader
				.getSystemResource("images/icon.png"))).getImage());
		aboutDialog.add(aboutPanel);
		aboutDialog.add(aboutButtonClose, BorderLayout.SOUTH);
		aboutDialog.pack();
		aboutDialog.setVisible(true);
	}
```

Und sobald ich in meinem Programm den About-Dialog aufrufe (genau diese Methode!), ist der Dialog da auch in der Taskleiste...


----------



## The_S (16. Jul 2008)

Hab dein Code mal "ausführbar" gemacht. Bei mir erscheint da nichts in der Taskleiste ...


```
public class Test {

	public static void main(String[] args) {
		new Test().showAboutDialog();
	}
	

	   JDialog aboutDialog;

	   JPanel aboutPanel;

	   JLabel aboutContent;

	   Dimension aboutDimension;

	   JButton aboutButtonClose;

	   public void showAboutDialog() {
	      aboutDimension = new Dimension();
	      aboutDimension.width = 210;
	      aboutDimension.height = 240;
	      Point screenCenter = new Point();
	      screenCenter.x = (Toolkit.getDefaultToolkit().getScreenSize().width / 2)
	            - (aboutDimension.width / 2);
	      screenCenter.y = (Toolkit.getDefaultToolkit().getScreenSize().height / 2)
	            - (aboutDimension.height / 2);
	      aboutContent = new JLabel();
	      aboutContent.setText("Mein Text");
	      aboutButtonClose = new JButton();
	      aboutButtonClose.setText("Close");
	 //     aboutButtonClose.setIcon(new ImageIcon(ClassLoader
	//            .getSystemResource("images/button_close.png")));
	      aboutButtonClose.addActionListener(new ActionListener() {
	         public void actionPerformed(ActionEvent e) {
	            aboutDialog.dispose();
	         }
	      });
	      aboutPanel = new JPanel();
	      aboutPanel.add(aboutContent);
	      aboutDialog = new JDialog();
	      aboutDialog.setTitle("Quiz");
	      aboutDialog.setAlwaysOnTop(true);
	      aboutDialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	      aboutDialog.setResizable(false);
	      aboutDialog.setLayout(new BorderLayout(2, 1));
	      aboutDialog.setPreferredSize(aboutDimension);
	      aboutDialog.setLocation(screenCenter);
	//      aboutDialog.setIconImage((new ImageIcon(ClassLoader
//	            .getSystemResource("images/icon.png"))).getImage());
	      aboutDialog.add(aboutPanel);
	      aboutDialog.add(aboutButtonClose, BorderLayout.SOUTH);
	      aboutDialog.pack();
	      aboutDialog.setVisible(true);
	   }
}
```

modal und owner (was ich angesprochen habe) fehlt aber noch.


----------



## dirty-mg (16. Jul 2008)

bin da ganz "Hobbit ihm seiner Meinung". Bei mir erscheint ebenfalls nix in der Taskleiste ...


----------



## Djinndrache (16. Jul 2008)

Kann es an den Gewohnheiten des avant-window-navigators (meine Alternative zur Taskleiste) liegen, dass der auch Dialoge anzeigt? JOptionPanes zeigt der allerdings auch nicht an...


----------



## The_S (16. Jul 2008)

kann sein, den kenne ich nicht.


----------



## Djinndrache (16. Jul 2008)

Dann betrachte ich das einfach mal als erledigt, wenn ihr beide sagt das ist so, dann wirds stimmen ^^


----------



## The_S (16. Jul 2008)

Mach doch den Dialog endlich mal Modal und setze einen Owner. Evtl. zeigts deine komische Taskbar dann auch nicht mehr an  .


----------



## Djinndrache (16. Jul 2008)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Mach doch den Dialog endlich mal Modal und setze einen Owner. Evtl. zeigts deine komische Taskbar dann auch nicht mehr an  .



gibt kein .setOwner() oder so


----------



## The_S (16. Jul 2008)

Gibt aber ne Dokumentation :roll:


```
aboutDialog = new JDialog(deinJFrame, true);
```


----------



## Guest (16. Jul 2008)

im Konstruktor übergeben. Schau doch einfach in die Java API Doc`s ....

http://java.sun.com/javase/6/docs/api/


----------



## Djinndrache (16. Jul 2008)

Die Java-Doku ist erbärmlich, da find ich mich nicht zurecht. So wie bei php.net muss eine Doku sein...

Naja, danke dir, so hauts hin


----------



## The_S (16. Jul 2008)

Die Java-Doku ist erbärmlich???????????

Frag mal nen C-Programmierer, was der für Dokus hat :roll: . Die Java-Doku beschreibt ALLES was, was es gibt. Was willst du mehr haben?


----------



## kleiner_held (16. Jul 2008)

Djinndrache hat gesagt.:
			
		

> Die Java-Doku ist erbärmlich, da find ich mich nicht zurecht. So wie bei php.net muss eine Doku sein...


Empfinde ich genau anders herum. Bei php.net findet man die wirklich relevanten Informationen der Funktions-Referenz immer erst in den User-Kommentaren - dort dann entsprechend unuebersichtlich.


----------



## Djinndrache (16. Jul 2008)

Was ich noch will? Übersicht! Die Informationen nützen nichts, wenn man sie nicht findet, wenn man sie braucht


----------



## The_S (16. Jul 2008)

Hm, die Dokumentation zur Klasse JDialog aufrufen und dann (hast ja das Wort von uns bekommen) nach "Owner" und/oder "modal" suchen. Schon hast du alle Informationen, die du benötigst.

Aber die API zu beherrschen ist schwer, hab ich auch lange für gebraucht  :wink:


----------

