JInternalFrame in den Vordergrund bringen

vaporizer

Erfahrenes Mitglied
Hallo

also folgendes...
Ich habe ein JDesktopPane, auf welchem ich mehrere JInternalFrames erstellln kann.
Das Problem ist, dass wenn ich ein JInternalFrame erstelle es nicht sofort aktive ist.
Ich will aber dass wenn ich ein neues Frame erstelle, dieses aktive ist.
setSelected(true), toFront und bringToFront hat alles nicht so richtig funktioniert.

Hoffe es kann mir jemand weiterhelfen

Greetz from Markus
 
Hallo!

Schau mal hier:
(Versuch das setSelected(true) mal NACHDEM du den JInternalFrame dem JDesktopPane hinzugefügt hast)
Code:
/**
 * 
 */
package de.tutorials;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;

import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

/**
 * @author Tom
 */
public class JDesktopPaneBackgroundImageExample extends JFrame {

	private JDesktopPane desktopPane;

	public JDesktopPaneBackgroundImageExample() {
		super("JDesktopPaneBackgroundImageExample");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setPreferredSize(new Dimension(640, 480));

		desktopPane = new JDesktopPane();

		final Dimension d = new Dimension(160, 120);

		JMenuBar bar = new JMenuBar();
		JMenu menu = new JMenu("Frames");
		bar.add(menu);
		menu.add(new JMenuItem("new") {
			{
				addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						JInternalFrame frm = new JInternalFrame("InternalFrame"
								+ System.currentTimeMillis(), true, true, true,
								true);
						frm.setSize(d);
						frm.setVisible(true);
						desktopPane.add(frm);

						try {
							frm.setSelected(true);
						} catch (PropertyVetoException e) {
							e.printStackTrace();
						}
					}
				});
			}
		});

		menu.add(new JMenuItem("close") {
			{
				addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						System.exit(0);
					}
				});
			}
		});

		add(desktopPane);
		setJMenuBar(bar);

		pack();
		setVisible(true);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new JDesktopPaneBackgroundImageExample();
	}

}

Gruß Tom
 
Dieses Problem habe ich leider auch und seltsamerweise wird das JInternalFrame auch bei einem setSelected(true) nachdem - also so wie du vorgeschlagen hast - ich es meinem JDesktopPane hinzugefügt habe nicht als selektiert angezeigt.
Es wirkt so als ob die setSeleceted()-Anweisung ignoriert würde. Ich kann mir nicht erklären warum.
Hast du vielleicht eine Idee wieso?

Schönen Tag noch

Alexander Schell
 
ich weiss zwar auch nicht warum das nicht funktioniert aber ich habs etwas anders gelöst:

bei der internalframe klasse als letzten befehl ein hide() und wenn du das fenster dann in deiner desktop klasse erstellst wieder ein fenstername.show(); dann ist es aktiviert und im vordergrund
 
Danke für die Antwort... :)
Ich werd's mal ausprobieren; im Augenblick hab' ich leider die Hände voll mit einem anderen Projekt - wollte endlich mal eine eigenen Internet-Präsenz aufbauen - aber ich werde darauf zurück kommen...

mit freundlichen Grüßen

Alexander Schell
 
Zurück