Установите размер 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. Этого можно достичь, передав эти значения конструктору "Панель эллипса".