将JPanel大小设置为以较小的边距填充父级

我有两个Jpanel( JpanelLeftJpanelLeftContent )如何使JpanelLeftContent填充父级大小,左侧和右侧有一点边距。 我尝试了不同的布局,并尝试修改hgap和vgap值,但没有一个给我一个好的结果。

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

如果可能的话,我如何使JpanelLeftContent看起来像一个圆角矩形,如图所示。

在此处输入图像描述

看看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轴中减去所需的像素数。 这可以通过将这些值传递给“椭圆面板”构造函数来实现。