Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Problema con JMenu

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    29

    Problema con JMenu

    Ho provato ad inserire un JMenuItem, già contenuto in un JPopupMenu, in un JMenu. Purtroppo così facendo è sparito dal JPopupMenu. Perchè? E sopratutto qual'è la soluzione?
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    3
    Evidentemente i JMenu gestiscono i JMenuItem con delle mappe, le quali se non ricordo male non ammettono l'inserimento di oggetti identici.
    Insomma non credo che i JMenuItem abbiano il dono dell'ubiquità.
    Cosa ti costa crearne uno nuovo?
    new JMenuItem(...)
    Ciao

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da nttman
    Evidentemente i JMenu gestiscono i JMenuItem con delle mappe
    Assolutamente no ... sei sulla strada (molto) sbagliata!!

    La questione è molto più semplice (e pure "logica" e forse intuibile ... se ci si pensa): ogni componente AWT/Swing ha 1 solo "parente", la classe java.awt.Component guarda caso infatti ha un campo:
    transient Container parent;
    E questo vuol dire che appunto un componente deve stare dentro 1 solo Container.

    Se si va a vedere il sorgente di java.awt.Container, in addImpl() che si occupa di aggiungere un componente si vede:

    codice:
    ....
    /* Reparent the component and tidy up the tree's state. */
    if (comp.parent != null) {
        comp.parent.remove(comp);
        if (index > component.size()) {
            throw new IllegalArgumentException("illegal component position");
        }
    }
    
    //index == -1 means add to the end.
    if (index == -1) {
        component.add(comp);
    } else {
        component.add(index, comp);
    }
    
    comp.parent = this;
    ....
    Quindi vale in generale, per qualunque componente .... se ho un JButton dentro un panelX e poi lo inserisco anche nel panelY ... beh, cambia parente!!!!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    29
    hai proprio ragione è logico e lo avevo pensato pure io. Semplicemente pensavo che mi sbagliassi... Grazie comunque.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.