3

我需要在另一个滚动窗格中创建一个“嵌套”滚动窗格,并且正在寻找一些逻辑建议。

这是我想做的- 在此处输入图像描述

我将使用“数字有线电视”类比来使这更容易,因为它让我想起了这一点。

将左侧红色面板中的框视为“频道名称”,将蓝色面板中的框视为“显示名称”。

右侧的黑色滚动条应控制两个面板的垂直滚动,以便频道名称始终与节目名称对齐。

但是,还应该有一个水平滚动条(蓝色),它只影响蓝色的框(想想它就像向前滚动以查看将要播放的节目,但仍然希望在左侧有频道名称所以你知道发生了什么)

到目前为止我尝试过的策略总是导致水平滚动条只显示在垂直滚动窗格的底部,并且它需要一直可见。帮帮我!这可能吗?

4

3 回答 3

1

您可以像我在这里找到的那​​样在两个表之间同步滚动和选择。

于 2011-09-09T21:32:59.237 回答
1

您可以使用行标题组件执行类似的操作。以下基本示例可能会向您展示这个想法:

JList insideLeft = new JList(new String[] { "Line 1", "Line 2", "Line 3" });
JList insideRight = new JList(new String[] { "Item 1", "Item 2", "Item 3" });
JScrollPane scrollPane = new JScrollPane(insideRight, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setRowHeaderView(insideLeft);
于 2011-09-09T17:16:05.870 回答
0

我假设您在自己的面板中同时拥有红色和蓝色区域。分别是redPanel 和bluePanel。

如果是这种情况,请尝试以下操作:

JScrollPane bluePane = new JScrollPane(bluePanel, 
        JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
JPanel redAndBluePanel = new JPanel();
redAndBluePanel.setLayout(new BoxLayout(redAndBluePanel, BoxLayout.X_AXIS));
redAndBluePanel.add(redPanel);
redAndBluePanel.add(bluePane);
JScrollPane redAndBluePane = new JScrollPane(redAndBluePanel, 
        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

现在只需将 redAndBluePane 添加到您需要的任何区域,它应该可以按需要运行。

于 2011-09-09T17:03:56.670 回答