首页 > 解决方案 > 使用 SpringUtilities 和 SpringLayout 无法将另一个组件(JPanel)添加到 JFrame

问题描述

panel代码派生自 oracle 文档(https://docs.oracle.com/javase/tutorial/uiswing/layout/spring.html)。我想在同一个框架中添加一个清除按钮,所以我创建了另一个面板:panel1. 现在的情况是paneland panel1,代码只会显示其中一个面板。在运行代码时,我想要panel1panel. 请告诉我如何实现它?和工作SpringLayoutSpringUtilities很好。

弹簧布局

import javax.swing.*;
import java.awt.*;
public class SpringDemo1 {
    public static void createAndShowGUI() {
        JFrame springlayoutFrame = new JFrame("Springlayout Demo");
        JPanel panel = new JPanel(new SpringLayout());
        JPanel panel1 = new JPanel(new SpringLayout());
        JRadioButton jRadioButton = new JRadioButton("Clear");
        panel1.add(jRadioButton);
        int rows = 5;
        int cols = 10;
        for (int r = 0; r < rows; r++) {
            for (int c = 0; c < cols; c++) {
                int anInt = (int) Math.pow(r, c);
                JTextField jTextField1 = new JTextField(Integer.toString(anInt));
                panel.add(jTextField1);
            }
        }

        SpringUtilities.makeCompactGrid(panel, //parent
                rows, cols,
                10, 50,  //initX, initY
                3, 3); //xPad, yPad
        //SpringUtilities.makeCompactGrid(panel1,1,1,0,50,5,5);
        panel.setOpaque(true);
        panel1.setOpaque(true);
        //springlayoutFrame.setContentPane(panel);
        springlayoutFrame.getContentPane().add(panel);
        //springlayoutFrame.getContentPane().add(panel1);
        springlayoutFrame.pack();
        springlayoutFrame.setVisible(true);
        }
    }

标签: javaswingjpanelawtspringlayout

解决方案


推荐阅读