1

我有两个 Jpanel(JpanelLeftJpanelLeftContent)我怎样才能使 JpanelLeftContent 填充父大小,并在左侧和右侧留出一点边距。我尝试了不同的布局并尝试修改 hgap 和 vgap 值,但它们都没有给我一个好的结果。

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

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

在此处输入图像描述

4

4 回答 4

4

..我怎样才能使 JpanelLeftContent 看起来像一个圆角矩形,如图所示。

TextBubbleBorder一开始。

显然,您需要删除底部的小v部分,并将底部边框进一步向下推。该代码没有经过全面测试,需要进一步的调整和修复。'不包括电池'。

于 2012-04-12T12:10:39.580 回答
3

看看Borders 是如何工作的。尤其
BorderFactory.createEmptyBorder(int top, int left, int bottom, int right)可能会有所帮助。

于 2012-04-12T11:55:00.257 回答
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();
            }
        });
    }
}

这是相同的输出:

插图

于 2012-04-12T14:19:08.510 回答
2

要使 JPanel 看起来是圆形的,您需要创建自己的扩展 JPanel 的类,覆盖paintComponent 并将面板绘制为椭圆Javadoc 这里这将创建一个自定义对象,它是一个 JPanel。

当您指定椭圆的大小时,您希望从父面板获取 Y 和 X 值(因为您将在另一个面板上添加椭圆),然后从 X 轴减去所需的像素数。这可以通过将这些值传递给“椭圆面板”构造函数来实现。

于 2012-04-12T11:43:56.983 回答