On Mac OS X, an instance of com.apple.laf.AquaInternalFrameUI determines the appearance of internal frames. You can minimize inconsistencies by setting the isPalette property and disabling frame icons on Mac OS X, as shown below.

import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.plaf.basic.BasicInternalFrameUI; public class InternalFrame { private static final int DELTA = 40; private JDesktopPane desktop = new JDesktopPane(); private int offset = DELTA; public InternalFrame() { JFrame f = new JFrame("Add Frame"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setPreferredSize(new Dimension(400, 400)); JPanel p = new JPanel(); p.add(new JButton(new AbstractAction("Add") { @Override public void actionPerformed(ActionEvent e) { createInternalFrame(); } })); f.add(p, BorderLayout.SOUTH); createInternalFrame(); f.add(desktop, BorderLayout.CENTER); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } private void createInternalFrame() { JInternalFrame internalFrame = new JInternalFrame( "Internal Frame");
trashgod
source share