使用鼠标滚动浏览 JTabbedPane 中的选项卡
Use mouse to scroll through tabs in JTabbedPane
我有一个 JTabbedPane
滚动选项卡布局,因此所有选项卡都很好地位于一行中。有没有办法允许用户使用鼠标滚轮滚动它们,或者是使用键盘和 GUI 的箭头并单击选项卡导航 JTabbedPane.SCROLL_TAB_LAYOUT
的唯一方法?
在深入了解 Eclipse 的自动完成功能后,我确实找到了答案:对 JTabbedPane
:
使用 MouseWheelListener
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
tabbedPane.addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
JTabbedPane pane = (JTabbedPane) e.getSource();
int units = e.getWheelRotation();
int oldIndex = pane.getSelectedIndex();
int newIndex = oldIndex + units;
if (newIndex < 0)
pane.setSelectedIndex(0);
else if (newIndex >= pane.getTabCount())
pane.setSelectedIndex(pane.getTabCount() - 1);
else
pane.setSelectedIndex(newIndex);
}
});
这既允许鼠标在选项卡上滚动,又尊重 JTabbedPane
的索引范围。
如果有人有更好的答案,我很乐意采纳!
我有一个 JTabbedPane
滚动选项卡布局,因此所有选项卡都很好地位于一行中。有没有办法允许用户使用鼠标滚轮滚动它们,或者是使用键盘和 GUI 的箭头并单击选项卡导航 JTabbedPane.SCROLL_TAB_LAYOUT
的唯一方法?
在深入了解 Eclipse 的自动完成功能后,我确实找到了答案:对 JTabbedPane
:
MouseWheelListener
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
tabbedPane.addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
JTabbedPane pane = (JTabbedPane) e.getSource();
int units = e.getWheelRotation();
int oldIndex = pane.getSelectedIndex();
int newIndex = oldIndex + units;
if (newIndex < 0)
pane.setSelectedIndex(0);
else if (newIndex >= pane.getTabCount())
pane.setSelectedIndex(pane.getTabCount() - 1);
else
pane.setSelectedIndex(newIndex);
}
});
这既允许鼠标在选项卡上滚动,又尊重 JTabbedPane
的索引范围。
如果有人有更好的答案,我很乐意采纳!