gpt4 book ai didi

java - JPanel 上的 JInternal 框架

转载 作者:行者123 更新时间:2023-11-30 03:44:07 26 4
gpt4 key购买 nike

我需要 JPanel 区域内的 JInternalFrame 的一些帮助。我有一个 JFrame,其中包含当我单击其菜单项之一时,JPanel 添加到其 ContentPane.JFrame 包含菜单需要将 JInternal Frame 添加到内容 Pane 的顶部。到目前为止我给出的代码,

    JDesktopPane desktop = new JDesktopPane();
desktop.setLayout(new BorderLayout());

JPanel topPanel = new JPanel();
GridBagLayout gbl_contentPane = new GridBagLayout();
gbl_contentPane.columnWidths = new int[] { 0, 0, 0, 0 };
gbl_contentPane.rowHeights = new int[] { 0, 0, 0, 0 };
gbl_contentPane.columnWeights = new double[] { 1.0, 6.0, 1.0,
Double.MIN_VALUE };
gbl_contentPane.rowWeights = new double[] { 0.0, 8.0, 0.0,
Double.MIN_VALUE };
topPanel.setLayout(gbl_contentPane);

JPanel left = new JPanel();
GridBagConstraints gbc_left = new GridBagConstraints();
gbc_left.insets = new Insets(0, 0, 5, 5);
gbc_left.fill = GridBagConstraints.BOTH;
gbc_left.gridx = 0;
gbc_left.gridy = 1;
topPanel.add(left, gbc_left);

JPanel middle = new JPanel();
GridBagLayout gbl_middle = new GridBagLayout();
gbl_middle.columnWeights = new double[] { 1.0 };
middle.setLayout(gbl_middle);
GridBagConstraints gbc_middle = new GridBagConstraints();
gbc_middle.insets = new Insets(0, 0, 5, 5);
gbc_middle.fill = GridBagConstraints.BOTH;
gbc_middle.gridx = 1;
gbc_middle.gridy = 1;
topPanel.add(middle, gbc_middle);

GridBagConstraints gbc = new GridBagConstraints();
JPanel panel1 = new JPanel();
Border eBorder = BorderFactory.createEtchedBorder();
panel1.setBorder(BorderFactory.createTitledBorder(eBorder, "70pct"));
gbc.gridx = 0;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.BOTH;
gbc.weightx = gbc.weighty = 30;
middle.add(panel1, gbc);
panel1.setLayout(new MigLayout("", "[944.00,grow][353.00]",
"[6.00][128.00,grow][]"));

/*lblHeader = new JLabel(
"<html>Indira Institute of Technology<br>Tatabad<br>Karpagam Complex Stop<br>Coimbatre</html>");
lblHeader.setIcon(new ImageIcon(
"C:\\Users\\Prakash\\Desktop\\images.jpg"));
panel1.add(lblHeader, "cell 0 1 2 1,alignx center,aligny center");*/

JPanel panel2 = new JPanel();
gbc = new GridBagConstraints();
panel2.setBorder(BorderFactory.createTitledBorder(eBorder, "30pct"));
gbc.gridy = 1;
gbc.gridwidth = gbc.gridheight = 1;
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.NORTHWEST;
gbc.weightx = gbc.weighty = 70;
gbc.insets = new Insets(2, 2, 2, 2);
middle.add(panel2, gbc);
panel2.setLayout(new MigLayout(
"",
"[30px][69.00px][144.00][68.00][][159.00px][59.00px][65px][28.00][]",
"[20px:n,grow 50,shrink 50][20px:n,grow 50,shrink 50][20px:n,grow 50,shrink 50][20px:n,grow 50,shrink 50][30.00][48.00:n,grow 50,shrink 50]"));

getContentPane.add(topPanel);

我从未在此使用过DesktopPane(我不知道如何在这种情况下使用它)并且屏幕到目前为止如下, a busy cat

现在我需要为上一个屏幕添加 JInternalFrame,如下所示, a busy cat

我知道我只能将 JInternalFrame 添加到 DesktopPane。但是我已经用 JPanel 填充了我的 ContentPane 以显示其内容。我如何实现 Jinternal在此JFrame中添加框架。请提出您的宝贵建议。

最佳答案

这不是正确的方向。您的原始面板受布局管理器的控制,这意味着当您向其中添加 JInternalFrame 时,布局管理器会尝试将其布局。

一般来说,JInternalFrame 希望驻留在非托管容器中,从而允许其独立于内容进行定位和调整大小。

一个可能的解决方案可能是利用 JInternalFrame 的玻璃 Pane ,有关更多详细信息,请参阅 How to Use Root Panes

另一种解决方案可能是使用JLayeredPane。基本上,您可以首先将 JLayeredPane 的布局管理器设置为某个链接,将第一个面板添加到其中,然后添加第二个透明 Pane ,没有布局,它上面。您可以将 JInternalFrame 添加到第二个面板。

参见How to Use Layered Panes了解更多详情

但我突然想到的问题是……为什么?为什么不直接使用某种对话框呢?请参阅How to Make Dialogs了解更多详情

关于java - JPanel 上的 JInternal 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26174026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com