Установите размер JPanel, чтобы заполнить родительский элемент с небольшим запасом

У меня есть два Jpanel (JpanelLeft и JpanelLeftContent), как я могу сделать JpanelLeftContent заполнить родительский размер с небольшим запасом слева на правой стороне. Я пробовал другой макет и пытался изменить значения hgap и vgap, но ни один из них не дает мне хороший результат.

  JPanel JpanelLeft = new JPanel();
  JPanel JpanelLeftContent = new JPanel();
  JpanelLeft.add(JpanelLeftContent);

И если возможно, как я могу сделать JpanelLeftContent похожим на закругленный прямоугольник, как показано на рисунке.

4 ответа

Решение

Посмотрите, как Borderс работой. Особенно
BorderFactory.createEmptyBorder(int top, int left, int bottom, int right) может быть полезным.

..как я могу сделать JpanelLeftContent похожим на закругленный прямоугольник, как показано на рисунке.

Увидеть TextBubbleBorder для начала.

Очевидно, вам нужно удалить маленький v внизу, и толкните нижнюю границу дальше вниз. Код не всесторонне протестирован и потребует дальнейших настроек и исправлений. "Батареи не включены".

Попробуйте этот пример кода:

import java.awt.*;
import javax.swing.*;

public class InsetTesting extends JFrame
{
    private void createAndDisplayGUI()
    {
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setLocationByPlatform(true);

        JPanel contentPane = new JPanel();
        contentPane.setOpaque(true);
        contentPane.setBorder(BorderFactory.createLineBorder(
                                    Color.DARK_GRAY.darker(), 5, true));
        contentPane.setBackground(Color.WHITE);

        add(contentPane, BorderLayout.CENTER);
        pack();
        setVisible(true);
    }

    public Insets getInsets()
    {
        return (new Insets(30, 20, 10, 20));
    }

    public Dimension getPreferredSize()
    {
        return (new Dimension(200, 400));
    }

    public static void main(String\u005B\u005D args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                new InsetTesting().createAndDisplayGUI();
            }
        });
    }
}

Вот результат того же:

Вставки

Чтобы JPanel выглядела округлой, вам нужно создать свой собственный класс, расширяющий JPanel, переопределить paintComponent и нарисовать панель как Javadoc эллипса. Это создаст настроенный объект, который является JPanel.

Когда вы указываете размер вашего эллипса, вы хотите получить значения Y и X из родительской панели (так как вы будете добавлять свой эллипс поверх другой панели), а затем вычесть желаемое количество пикселей из оси X. Этого можно достичь, передав эти значения конструктору "Панель эллипса".

Другие вопросы по тегам