将JGoodies Panel的最大宽度设置为JScrollPane大小

时间:2013-06-27 14:44:26

标签: java swing jscrollpane layout-manager jgoodies

我试图将一个JGoodies面板放入一个只有垂直滚动条的JScrollPane中;任何大于当前JScrollPane宽度的元素都应该被截断。但是,我无法找到一种方法来实现这项工作

我想要的效果示例 Good example

我不想发生什么 bad example

我目前的代码基本上是:

    FormLayout locationsLayout = new FormLayout("15dlu, pref, 5dlu, pref, 5dlu, pref:grow", "");
    locationsBuilder = new DefaultFormBuilder(locationsLayout)
            .background(Color.WHITE)
            .lineGapSize(Sizes.ZERO);
    locationsPane = new JScrollPane(locationsBuilder.getPanel());
    locationsPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    locationsPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

    //...Sometime later, the user adds a folder...
    FormLayout headerLayout = new FormLayout("pref, pref", "pref");
    DefaultFormBuilder headerBuilder = new DefaultFormBuilder(headerLayout)
            .background(Color.WHITE)
            .lineGapSize(Sizes.ZERO);
    headerBuilder.add(curContainer.getGuiHeader(), CC.xy(1, 1));
    headerBuilder.add(curContainer.getGuiTablePrefix(), CC.xy(2, 1));
    locationsBuilder.leadingColumnOffset(0);
    locationsBuilder.append(headerBuilder.getPanel(), 6);

我尝试过的事情

  • min,pref,grow,fill等的各种排列。没有改变这种行为
  • 将实现Scrollable的自定义JPanel传递给locations hereherehere
  • 中的locationsBuilder DefaultFormBuilder构造函数
  • 尝试使用JScrollPane上的其他垂直滚动条选项

我不知道还能尝试什么。有人有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我永远无法找到这个特定设置的确切答案。我的猜测是JGoodies很好地处理了嵌套布局。

我最后通过在整个位置滚动窗格中只使用一个面板来“修复”这个问题。这使得布局有点复杂:现在多个单元必须跨越列,我不得不手动调整列偏移。但最终它起作用