0

我正在开发一个带有主面板的 java 应用程序,我在其中添加了一个JDesktopPane. 用户点击JButton,会显示一个JInternalFrame。我的问题是,如果我使用 Mac OSx 外观和感觉,则JDesktopPane显示正确大小JInternalFrame,如果我使用其他外观和感觉,它将显示JInternalFrame在屏幕尺寸中。这就是我所做的:

在主要JPanel

jDesktopPane1 = new JDesktopPane();
setContentPane(jDesktopPane1);

当用户点击JButton(s)

public void addInDesktop(JInternalFrame frame){
        frame.setVisible(true);
        try {   
                        jDesktopPane1.setSize(frame.getSize());
                        jDesktopPane1.setPreferredSize((frame.getSize()));
                        System.out.println(frame.getSize().toString());
                        System.out.println(jDesktopPane1.getSize().toString());
            jDesktopPane1.add(frame);
            frame.moveToFront();
            frame.setSelected(true);
        } catch (PropertyVetoException e) {
            e.printStackTrace();
        }
    }

说我 JDesktopPane 和 JInternalFrame的System.out.println尺寸是一样的,但是为什么它会以全屏尺寸显示 JInternalFrame 呢?

4

2 回答 2

2

如果您要在 jDesktopPane1.add(frame)之后打印出尺寸,那么您可能会看到尺寸的变化。我建议将桌面窗格设置为内部框架的大小是一种不好的做法 - 我本以为它应该保持桌面窗格所在的父 JFrame 的客户区域的大小(调用 setContentPane( jDesktopPane1) ),然后让内部框架自然地坐在其中的某个地方。

可能发生的情况是,将窗格和内部设置为相同大小可能会使外观和感觉假定您的意思是“最大化”,因此当它正确解析桌面窗格的大小时,它会对内部框架产生奇怪的影响。

尝试不要在桌面窗格上调用 setSize() / setPreferredSize() 并查看它是否在 L&F 中表现一致。如果内部框架的默认大小不是您想要的,那么也许您可以弄清楚如何最好地处理内部框架。

于 2012-03-28T10:50:22.933 回答
1

如果您想将尺寸设置为与您要放入的 jframe 一样宽和高。您可以使用

variable_desktopPane.setBounds(this.getBounds());

this我的意思是你正在调用它的边界的 Jframe 。

我希望这会有所帮助,问候。

于 2016-07-15T21:23:36.873 回答