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

时间:2016-09-02 13:04:39

标签: java swing

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

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

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

请参见下图。

enter image description here

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

如何只设置坐标和宽度而不触及其他两个变量?

2 个答案:

答案 0 :(得分:2)

根据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);
    }
}

现在看起来好多了。

enter image description here

只是,现在我还有一些事情需要处理,例如:

  1. 包装书籍描述;
  2. 使内容面板可滚动;和
  3. 确保设置图书名称标签的标签高度,以便不剪切内容。
  4. 但这些不是我在问题中提到的问题,所以他的建议充分解决了我的问题。

答案 1 :(得分:0)

如果您使用的是任何布局管理器,setBounds()无论如何都无效。只需使用setPreferredSize()指定宽度和高度。

我很有可能没有完全理解你的要求。如果您想要显示组件的显示方式,那将有所帮助,然后我可以建议实现这一目标的最佳布局。

相关问题