我需要在另一个滚动窗格内制作一个“嵌套”滚动窗格,并且正在寻找一些逻辑建议。
这是我想做的 -
我将使用'数字有线电视'类比来使这更容易,因为这是它让我想起的。
将左侧红色面板中的方框视为“频道名称”,并将蓝色面板中的方框视为“显示名称”。
右侧的黑色滚动条应控制两个面板的垂直滚动,以便频道名称始终与节目名称对齐。
但是,还应该有一个水平滚动条(蓝色),它只影响蓝色的框(想想它就像向前滚动看看会有什么节目,但仍然想要有频道名称在左边,所以你知道发生了什么)
到目前为止我尝试过的策略总是会导致水平滚动条仅显示在垂直滚动窗格的底部,并且它始终需要可见。帮帮我!这有可能吗?
答案 0 :(得分: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);
答案 1 :(得分:1)
您可以在两个表之间同步滚动和选择,就像我找到here一样。
答案 2 :(得分: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添加到您需要的任何区域,它应该按照需要运行。