2009-07-04 7 views
1

J'essaie de ne pas décortiquer un JInternalFrame, c'est-à-dire de supprimer la barre de titre par défaut en utilisant le code suivant;Undecorate JInternalFrame sur MacOS

BasicInternalFrameUI ui = (BasicInternalFrameUI)internalFrame.getUI(); 
ui.getNorthPane().setPrefrredSize(new Dimension(0,0)); 

Je travaille sur les fenêtres, mais la deuxième ligne jette un NullPointerException sur Mac OS

Toutes les idées pourquoi et comment la contourner?

Répondre

0

Sur Mac, JInternalFrame n'a pas de volet nord. N'exécutez le code sur aucune plate-forme Mac OS;

// only remove the northpanel for none Mac OS 
if(!(System.getProperty("os.name").startsWith("Mac OS"))){ 
    BasicInternalFrameUI ui = (BasicInternalFrameUI) getUI(); 
    ui.getNorthPane().setPrefrredSize(new Dimension(0,0)); 
} 

donc beaucoup sur la plate-forme cross :-(

0

Je n'utilise pas de Mac, donc je ne sais pas quel est le problème. Un JInternalFrame sans la barre de titre perd sa capacité à être déplacé. Vous devriez être en mesure d'atteindre le même objectif en ajoutant simplement un JPanel sur le bureau. Vous devez définir les limites du panneau. Vous pouvez également utiliser l'une des bordures personnalisées de cadre interne du panneau:

UIManager.getBorder("InternalFrame.paletteBorder"); 
UIManager.getBorder("InternalFrame.optionDialogBorder"); 

Ou peut-être une autre option consiste à utiliser:

internalFrame.putClientProperty("JInternalFrame.isPalette", Boolean.TRUE); 

Cela remplacera la barre de titre avec une petite palette peut être utilisé pour faire glisser le cadre interne sans les boutons ou le titre.

+0

« Un JInternalFrame sans la barre de titre perd sa capacité à être traîné » - mais il peut encore être redimensionnée;) –

+0

@ivan J'ai code personnalisé gérer le redimensionnement et le glissement de la fenêtre. – n002213f

Questions connexes