我有两个Jpanel( JpanelLeft 和 JpanelLeftContent )如何使JpanelLeftContent填充父级大小,左侧和右侧略有边距。我尝试了不同的布局,并尝试修改hgap和vgap值,但没有一个给我一个好的结果。
JPanel JpanelLeft = new JPanel();
JPanel JpanelLeftContent = new JPanel();
JpanelLeft.add(JpanelLeftContent);
如果可能的话,我如何使JpanelLeftContent看起来像一个圆角矩形,如图所示。
答案 0 :(得分:4)
..如何让JpanelLeftContent看起来像一个圆角矩形,如图所示。
首先看TextBubbleBorder
。
显然你需要移除底部的小v
,&将底部边界向下推。该代码未经过全面测试,需要进一步调整和修复。 '不包括电池'。
答案 1 :(得分:3)
了解Border
的工作原理。特别是BorderFactory.createEmptyBorder(int top, int left, int bottom, int right)
可能会有帮助。
答案 2 :(得分:3)
请尝试以下代码示例:
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();
}
});
}
}
以下是相同的输出:
答案 3 :(得分:2)
要使JPanel显示为四舍五入,您需要创建自己的类来扩展JPanel,覆盖paintComponent并将该面板绘制为椭圆Javadoc here这将创建一个自定义对象,即JPanel。
当您指定椭圆的大小时,您希望从父面板中获取Y和X值(因为您将在另一个面板的顶部添加椭圆),然后从X中减去所需的像素数-轴。这可以通过将这些值传递给“椭圆面板”构造函数来实现。