使用鼠标滚动JTabbedPane中的选项卡

时间:2016-07-19 15:41:51

标签: java swing user-interface mousewheel jtabbedpane

我在滚动标签布局中有JTabbedPane,因此所有标签都可以很好地放在一行上。有没有办法允许用户使用鼠标滚轮滚动它们,或者是使用键盘和GUI箭头导航JTabbedPane.SCROLL_TAB_LAYOUT并单击选项卡的唯一方法?

1 个答案:

答案 0 :(得分:5)

在挖掘Eclipse的自动完成功能后,我确实找到了答案:对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);
    }
});

这两者都允许鼠标滚动选项卡,并尊重JTabbedPane的索引边界。

如果有人有更好的答案,我很乐意接受!