17s*_*lim 1 java user-interface swing mousewheel jtabbedpane
我有一个JTabbedPane滚动标签布局,所以所有标签都很好地放在一行上.有没有办法允许用户使用鼠标滚轮滚动它们,或者是JTabbedPane.SCROLL_TAB_LAYOUT使用键盘和GUI的箭头并单击选项卡导航的唯一方法?
在挖掘Eclipse的自动完成后,我确实找到了答案:使用a MouseWheelListener表示JTabbedPane:
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);
}
});
Run Code Online (Sandbox Code Playgroud)
这两者都允许鼠标滚动选项卡,并尊重的索引边界JTabbedPane.
如果有人有更好的答案,我很乐意接受!