【问题标题】:JPanel inside another另一个JPanel里面
【发布时间】:2011-06-12 14:13:25
【问题描述】:

我在另一个 JPanel 中遇到问题。我不知道为什么,但结果是一个简单的正方形,但尺寸不正确。这是为什么呢?

import java.awt.Color;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class jj extends JFrame {

    private JPanel painel3;
    private JPanel painel5;
    private Container container;

    public jj() {

        container = getContentPane();
        container.setLayout(null);

        painel5 = new JPanel();
        painel5.setBackground(Color.red);
        painel5.setBounds(120, 110, 100, 120);
        painel3 = new JPanel();
        painel3.setBackground(Color.white);
        painel3.add(painel5);
        painel3.setBounds(50, 50, 290, 220);

        container.add(painel3);

        // frame
        setSize(1000, 900);
        setLocation(200, 50);
        setResizable(false);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public static void main(String[] args) {
        new jj();
    }
}

【问题讨论】:

    标签: java swing jpanel


    【解决方案1】:

    您还需要将 panel3 的布局设置为 null 否则使用默认的 FlowLayout

    panel3.setLayout(null);

    【讨论】:

    • 在我测试他的代码时添加painel3.setlayout(null); 有效。
    【解决方案2】:

    一些额外的建议。学习使用 LayoutManager。他们可能有一点学习曲线,但绝对值得。不错的教程:http://download.oracle.com/javase/tutorial/uiswing/layout/using.html

    同样根据 Java 标准,类名应该以大写字母开头。这样做会帮助其他人更好地阅读您的代码。

    【讨论】:

    • 我将布局更改为网格布局
    【解决方案3】:

    更好的是避免使用空布局和 setBounds/setSize,而是让布局管理器帮助您布置 GUI。你可以在这里阅读它们:Laying out components in a container

    【讨论】:

      【解决方案4】:

      在添加painel5面板之前将painel3的布局设置为null。

      painel3.setLayout(null); painel3.add(painel5);

      我推荐使用 LayoutManagers。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多