我在滚动选项卡布局中有一个JTabbedPane,因此所有选项卡都很好地排成一行。有没有一种方法可以允许用户使用鼠标滚轮滚动浏览它们,还是通过键盘和GUI的箭头并单击选项卡来导航JTabbedPane.SCROLL_TAB_LAYOUT的唯一方法?

最佳答案

在深入研究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的索引范围。

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

10-06 14:03
查看更多