JPanel внутри другого - PullRequest
       4

JPanel внутри другого

8 голосов
/ 20 января 2011

У меня проблема с 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();
    }
}

Ответы [ 4 ]

5 голосов
/ 20 января 2011

Вам нужно установить макет для панели 3 также на ноль, иначе используется значение по умолчанию FlowLayout:

panel3.setLayout(null);

3 голосов
/ 20 января 2011

Пара дополнительных рекомендаций.Научитесь пользоваться LayoutManager.Они могут иметь небольшую кривую обучения, но это определенно стоит того.Хороший учебник: http://download.oracle.com/javase/tutorial/uiswing/layout/using.html

Также в соответствии со стандартами Java имена классов должны начинаться с заглавной буквы.Это поможет другим лучше прочитать ваш код.

2 голосов
/ 20 января 2011

Еще лучше, хотя бы избегать использования пустых макетов и setBounds / setSize, но лучше позволить менеджерам компоновки помочь вам в создании вашего GUI.Вы можете прочитать о них здесь: Размещение компонентов в контейнере

0 голосов
/ 20 января 2011

Установите макет painel3 на ноль перед добавлением панели painel5.

painel3.setLayout (нуль); painel3.add (painel5);

Рекомендую использовать LayoutManager.

...