繁体   English   中英

如何只设置JPanel的左坐标和宽度?

[英]How to set just the left coordinates and the width of a JPanel?

我想设置另一个面板内的一个面板的左坐标和宽度。

innerPanel.setBounds(/* expects a rectangle that 
         specifies y and height, which I would not like to set */);

setBounds希望我也指定y坐标和height ,这是我不想设置的,因为我想将东西垂直堆叠在此面板中,例如Stack Layout (VJ ++中存在的旧布局, Microsoft的Java副本)或GridLayout(0, 1)

请参见下面的图片。

在此处输入图片说明

这些书中的每本书都是一个较大面板中的一个面板。 我希望他们在左边有一些空间,在右边有一些空间,然后我想用文字换行说明。

如何在不触摸其他两个变量的情况下仅设置坐标和宽度

按照安德鲁·汤普森(Andrew Thompson)的建议,我在包含所有书籍的面板周围创建了一个空边框,并且解决了在容器边缘周围定义填充或边距的问题。

public class BookRecommendationsContentPanel extends JPanel {

    public BookRecommendationsContentPanel(JLabel lblStatus) {
        super();

        ...

        this.setBorder(new EmptyBorder(20, 20, 10, 20));
    }

    public void AddBook(Book book) {

        JPanel pnlBook = new JPanel();
        ...
        this.add(pnlBook);
    }
}

现在看起来好多了。

在此处输入图片说明

只是,现在我还有更多事情要处理,例如:

  1. 用文字包装书籍描述;
  2. 使内容面板可滚动;
  3. 确保设置了书名标签的标签高度,以免夹住内容。

但是这些不是我在问题中提到的问题,因此他的建议可以充分解决我的问题。

如果使用任何布局管理器,则setBounds()无效。 只需使用setPreferredSize()来指定宽度和高度。

我很可能尚未完全了解您的要求。 如果您放一张有关如何显示组件的图片,这将对您有所帮助,然后我可以建议实现此目的的最佳布局。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM