JInternalFrames von JDesktopFrame entfernen

Status
Nicht offen für weitere Antworten.

chrissy

Bekanntes Mitglied
Hi,

ich habe ein JDesktopPane (desktop), das mehrere MyInternalFrames (extends JInternalFrame) beinhaltet,
bevor ein neues MyInternalFrame hinzugefügt wird, prüfe ich, ob es bereits ein Frame mit diesem Namen gibt, wenn ja, dann wird es geschlossen, ansonsten werden die Frames minimiert.

Code:
Component[] outOpen = desktop.getComponents();
    for (int i = 0; i < desktop.getComponents().length; i++) 
    {
       // Frame nicht minimiert
       if (outOpen[i] instanceof MyInternalFrame)
       {
          if ( ((MyInternalFrame)outOpen[i]).getInternalName().equalsIgnoreCase(internalName) )
          {
            desktop.remove(outOpen[i]);
          }
          else 
          {
            try { ((MyInternalFrame)outOpen[i]).setIcon(true);}
            catch (PropertyVetoException e) {}
          }
       }
       // Frame bereits minimiert
       else if (outOpen[i] instanceof JInternalFrame.JDesktopIcon)
       {
         if ( ((JInternalFrame.JDesktopIcon)outOpen[i]).getName().equalsIgnoreCase(internalName) )
         {
           desktop.remove(outOpen[i]);
         }
       }
    }

Wenn MyInternalFrame nicht minimiert ist, funktioniert alles super. Im minimierten Zustand scheint mir das Frame zwar entfernt zu werden, aber der Button für das minimierte Frame wird nicht entfernt.
Was muss man tun, damit der Button auch noch entfernt wird?

Danke
chrissy
 

André Uhres

Top Contributor
Ich hab das mal nachgestellt, seh aber auf den ersten Blick dein Problem nicht:
Code:
package desktop;
/*
 * TooltipInternalframe.java
 */
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.beans.PropertyVetoException;
public class InternalframeDemo extends JFrame {
    private JDesktopPane desktop;
    private MyInternalFrame internalFrame;
    private String internalName;
    private JToolBar toolbar;
    private JButton button;
    public InternalframeDemo() {
        super("Internalframe Demo");
        desktop = new JDesktopPane();
        internalFrame = new MyInternalFrame("JInternalFrame");
        internalFrame.setBounds(20,20,100,150);
        internalFrame.setIconifiable(true);
        internalFrame.setVisible(true);
        desktop.add(internalFrame);
        getContentPane().add( desktop, BorderLayout.CENTER );
        toolbar = new JToolBar();
        add(toolbar, BorderLayout.NORTH);
        button = new JButton("Test");
        toolbar.add(button);
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                doButtonAction();
            }
        });
    }
    private void doButtonAction(){
        test("JInternalFrame");
        MyInternalFrame internalFrame = new MyInternalFrame("JInternalFrame");
        internalFrame.setBounds(200,20,100,150);
        internalFrame.setIconifiable(true);
        internalFrame.setVisible(true);
        desktop.add(internalFrame);
        desktop.repaint();
    }
    private void test(String internalName){
        Component[] outOpen = desktop.getComponents();
        for (int i = 0; i < desktop.getComponents().length; i++) {
            // Frame nicht minimiert
            if (outOpen[i] instanceof MyInternalFrame) {
                if ( ((MyInternalFrame)outOpen[i]).getInternalName().equalsIgnoreCase(internalName) ) {
                    desktop.remove(outOpen[i]);
                } else {
                    try { ((MyInternalFrame)outOpen[i]).setIcon(true);} catch (PropertyVetoException e) {}
                }
            }
            // Frame bereits minimiert
            else if (outOpen[i] instanceof JInternalFrame.JDesktopIcon) {
                if ( ((JInternalFrame.JDesktopIcon)outOpen[i]).getName().equalsIgnoreCase(internalName) ) {
                    desktop.remove(outOpen[i]);
                }
            }
        }
    }
    public static void main(final String[] args) {
        JFrame frame = new InternalframeDemo();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setSize(new Dimension(400,300));
        frame.setVisible(true);
    }
}
class MyInternalFrame extends JInternalFrame{
    private String name;
    public MyInternalFrame(final String title){
        super(title);
        name = title;
        desktopIcon.setName(name);
    }
    public String getInternalName() {return name;}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
GianaSisters JFrame mit JInternalFrames, Keylistener-Problem AWT, Swing, JavaFX & SWT 9
J JDesktopPane: Aero für JInternalFrames AWT, Swing, JavaFX & SWT 3
V Wie benutzt man JInternalFrames? AWT, Swing, JavaFX & SWT 7
X Swing JDialog von JInternalFrames überlappen lassen AWT, Swing, JavaFX & SWT 2
L Probleme mit JInternalFrames AWT, Swing, JavaFX & SWT 3
T Bisherige JFrames in JPanels oder JInternalFrames? AWT, Swing, JavaFX & SWT 2
D Darstellungsprobleme bei JButtons auf JInternalFrames AWT, Swing, JavaFX & SWT 4
R MDI: Rahmen des JInternalFrames . AWT, Swing, JavaFX & SWT 5
T JInternalFrames permanent aktiv AWT, Swing, JavaFX & SWT 3
R Probleme beim Wiederherstellen eines JInternalFrames AWT, Swing, JavaFX & SWT 4
G Aktion beim Öffnen und Schliessen eines JInternalFrames AWT, Swing, JavaFX & SWT 4
K Canvas bei JInternalFrames AWT, Swing, JavaFX & SWT 2
T JInternalFrames und Desktop-Elemente AWT, Swing, JavaFX & SWT 6
G Resizing Probleme bei JInternalFrames AWT, Swing, JavaFX & SWT 4
E Fenstergöße JDesktopframe AWT, Swing, JavaFX & SWT 5
H Swing Wie Fokus von JTextField entfernen? AWT, Swing, JavaFX & SWT 9
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
J JavaFX - Included FXML - Entfernen feststellen AWT, Swing, JavaFX & SWT 2
Monokuma Canvas Form entfernen AWT, Swing, JavaFX & SWT 2
R AWT Listeners entfernen AWT, Swing, JavaFX & SWT 0
kodela angezeigtes Image entfernen AWT, Swing, JavaFX & SWT 1
N JavaFX Group: Gezieltes entfernen eines Objects (Rectangle) AWT, Swing, JavaFX & SWT 0
xYurisha Aus einer Gui Buttons, Label und ProgessBars entfernen AWT, Swing, JavaFX & SWT 4
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
B Swing mehrfache Tabelleneinträge entfernen AWT, Swing, JavaFX & SWT 5
M Default-WindowListener JFrame entfernen (Stichwort: iconified) AWT, Swing, JavaFX & SWT 4
M JavaFX TableView & CSS, Rand um Tabellenkopf entfernen AWT, Swing, JavaFX & SWT 3
C SWT MenuBar & MenuItems Fokus wenn F10 unterdrücken/entfernen AWT, Swing, JavaFX & SWT 9
T Swing Tabelle mit Button - Anzeigefehler nach Zeile entfernen AWT, Swing, JavaFX & SWT 1
I Spielsteine zeichnen und entfernen AWT, Swing, JavaFX & SWT 3
wolfgang63 JavaFX Elemente einer Group entfernen AWT, Swing, JavaFX & SWT 1
C Geloest: JTextfield: Titel automatisch entfernen, sobald Text eingegeben wird AWT, Swing, JavaFX & SWT 1
S Die Rücktaste und Entfernen in einer Textarea blockieren AWT, Swing, JavaFX & SWT 3
C JavaFX Entfernen vom "java" Menüeintrag in der Systemmenüleiste in Mac OsX in Verbindung mit JavaFX AWT, Swing, JavaFX & SWT 1
S SWT [TextBox] Bestimmtes Zeichen entfernen unterbinden AWT, Swing, JavaFX & SWT 3
M Element aus JList eines JFileChooser entfernen AWT, Swing, JavaFX & SWT 3
B Buttons entfernen / hinzufügen AWT, Swing, JavaFX & SWT 5
B Fokus markierung entfernen AWT, Swing, JavaFX & SWT 2
M Makierung bei JRadioButton entfernen AWT, Swing, JavaFX & SWT 5
C AWT Fokus von Component entfernen, wenn kein anderes vorhanden AWT, Swing, JavaFX & SWT 4
C SWT CTabFolder / CTabItem Markierung des angewählten Tabs entfernen AWT, Swing, JavaFX & SWT 10
S ImageIcon von Label entfernen AWT, Swing, JavaFX & SWT 9
R Komponente wieder entfernen AWT, Swing, JavaFX & SWT 13
B Komponente "sauber" entfernen(JToolBar) AWT, Swing, JavaFX & SWT 4
R JPanel von JScrollPane entfernen und hinzufügen AWT, Swing, JavaFX & SWT 3
G Swing JTree - Verbindungslinien entfernen AWT, Swing, JavaFX & SWT 4
AyKay SWT (alle) Listener bzw. ModifyEventListener entfernen AWT, Swing, JavaFX & SWT 2
Z Swing Bild aus Panel entfernen AWT, Swing, JavaFX & SWT 12
C Swing JLabels entfernen und neue einfügen AWT, Swing, JavaFX & SWT 6
G Swing MigLayout: Lücken zwischen Elementen entfernen AWT, Swing, JavaFX & SWT 2
Z Swing Buttons wieder entfernen vom Bildschirm AWT, Swing, JavaFX & SWT 5
E Swing Den Button Vergrössern/Verkleinern entfernen AWT, Swing, JavaFX & SWT 4
A Komponenten zur Laufzeit entfernen AWT, Swing, JavaFX & SWT 3
multiholle Button bei Klick entfernen AWT, Swing, JavaFX & SWT 3
A Swing JList Einträge entfernen AWT, Swing, JavaFX & SWT 6
M Swing Rahmen innerhalb des JButton entfernen AWT, Swing, JavaFX & SWT 2
H JFrame Rahmen entfernen AWT, Swing, JavaFX & SWT 1
H JList: Selection-Border entfernen AWT, Swing, JavaFX & SWT 2
T Dynamisches hinzufügen und entfernen von Bildern AWT, Swing, JavaFX & SWT 3
C Swing Schließen, Maximieren, Minimieren entfernen AWT, Swing, JavaFX & SWT 6
S Swing JInternalFrame: Titelleiste entfernen AWT, Swing, JavaFX & SWT 5
L GUI Komponenten zur Laufzeit entfernen AWT, Swing, JavaFX & SWT 4
K SWT und Tree, wie kann ich TreeItem aus einem Tree entfernen? AWT, Swing, JavaFX & SWT 12
byte JTabbedPane - Insets entfernen AWT, Swing, JavaFX & SWT 7
T JTree - alle Nodes entfernen AWT, Swing, JavaFX & SWT 8
T Abbrechen-Icon entfernen AWT, Swing, JavaFX & SWT 4
S JLabel entfernen AWT, Swing, JavaFX & SWT 9
M Redundanzen in JTable entfernen? AWT, Swing, JavaFX & SWT 9
T JCheckBox deselektieren (Haken wieder entfernen) - wie? AWT, Swing, JavaFX & SWT 5
G Entfernen von Tags in EditorPane AWT, Swing, JavaFX & SWT 6
P Alle Komponenten von JPanel in der Mitte entfernen AWT, Swing, JavaFX & SWT 2
D RadioButton abstand entfernen AWT, Swing, JavaFX & SWT 2
J Border bei JSplitPane entfernen? AWT, Swing, JavaFX & SWT 2
S SWT Table - Wie Columns hinzufügen / entfernen AWT, Swing, JavaFX & SWT 3
V JCheckBoxMenuItem "Rahmen" entfernen AWT, Swing, JavaFX & SWT 25
M JCheckBox Standard MouseListener entfernen AWT, Swing, JavaFX & SWT 13
M leerzeichen aus string entfernen AWT, Swing, JavaFX & SWT 3
I JFrame-Anmerkung "Java Applet Window" entfernen AWT, Swing, JavaFX & SWT 4
M PlainDocument von JTextField entfernen AWT, Swing, JavaFX & SWT 2
I JFrame Applet-Anmerkung entfernen ? - Teil 2 AWT, Swing, JavaFX & SWT 5
P TextFeld Focus entfernen AWT, Swing, JavaFX & SWT 2
A Komponente entfernen. Kein neuzeichnen nach validate() AWT, Swing, JavaFX & SWT 2
G SWT Toolbar: Toolitem entfernen und wieder hinzufügen AWT, Swing, JavaFX & SWT 16
S Entfernen eines Menueintrages AWT, Swing, JavaFX & SWT 5
P JList Selektierung entfernen AWT, Swing, JavaFX & SWT 3
P JMenu / JMenuItem durch Rekursion Icons entfernen AWT, Swing, JavaFX & SWT 4
S entfernen und hinzufügen von JScrollPane AWT, Swing, JavaFX & SWT 2
N Minimieren- und Maximieren-Button eines JFrame entfernen? AWT, Swing, JavaFX & SWT 11
F JFrame Applet-Anmerkung entfernen ? :( AWT, Swing, JavaFX & SWT 41
F ComponentListener entfernen? AWT, Swing, JavaFX & SWT 14
R JLabel Icon wieder entfernen AWT, Swing, JavaFX & SWT 4
L textfeld entfernen AWT, Swing, JavaFX & SWT 4
L Label-Icon entfernen? AWT, Swing, JavaFX & SWT 4
A Titelleiste entfernen AWT, Swing, JavaFX & SWT 4
R Anonymen CaretListener wieder entfernen AWT, Swing, JavaFX & SWT 4
G TableModel von JTable wieder entfernen AWT, Swing, JavaFX & SWT 10
X Container aus FocusCycle entfernen AWT, Swing, JavaFX & SWT 2
R Component aus Container entfernen bzw. austauschen. AWT, Swing, JavaFX & SWT 6
X JTree: Selektion nach dem Entfernen von Knoten AWT, Swing, JavaFX & SWT 2
B Listener entfernen bei JScrollbar AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben