如何防止通过鼠标单击更改选项卡

时间:2013-12-06 08:31:12

标签: java swing mouselistener

我的问题可能很愚蠢,但我正在尝试JTabbedPane中通过鼠标点击禁用更改标签页。我在谷歌搜索,但没有找到任何有用的答案。我尝试添加空MouseListener但仍然可以在鼠标单击时更改选项卡。

我的代码如下:

public JTabbedPane createTabbedPane()
{
    JTabbedPane pane=new JTabbedPane();
    pane.addTab("tab1",panel1);
    pane.addTab("tab2",panel2);
    pane.addTab("tab3",panel3);
    pane.addMouseListener(new MouseAdapter());
    return pane;
}

我也试过这个:

public JTabbedPane createTabbedPane()
{
    JTabbedPane pane=new JTabbedPane();
    pane.addTab("tab1",panel1);
    pane.addTab("tab2",panel2);
    pane.addTab("tab3",panel3);
    pane.addMouseListener(new MouseListener()
    {
        @Override
            public void mouseClicked(MouseEvent e) {}

            @Override
            public void mousePressed(MouseEvent e) {}

            @Override
            public void mouseReleased(MouseEvent e) {}

            @Override
            public void mouseEntered(MouseEvent e) {}

            @Override
            public void mouseExited(MouseEvent e) {}
    });
    return pane;
}

如果有人知道如何做到这一点,请告诉我。提前谢谢。

3 个答案:

答案 0 :(得分:2)

您可以在ChangeListener的帮助下通过鼠标阻止更改标签,如下所示:

final JTabbedPane pane = new JTabbedPane();
pane.addChangeListener(new ChangeListener() {

    @Override
    public void stateChanged(ChangeEvent e) {
        pane.setSelectedIndex(HOLD_INDEX);
    }
});

HOLD_INDEX是以编程方式选择的选项卡的索引。

当您尝试选择其他标签时,会重新选择HOLD_INDEX

答案 1 :(得分:1)

你可以尝试几件事......

你可以

将您不想选择的标签设置为禁用...

pane.setEnabled(indexOfTab, false);

你可以

提供您自己的SingleSelectionModel,您可以从中控制哪些选项卡可以选择

答案 2 :(得分:-1)

另一种可能性是使用空实现覆盖addMouseListener(...)以防止任何鼠标交互。示例代码如下:

JTabbedPane tabbedPane = new JTabbedPane() {
    public synchronized void addMouseListener(MouseListener l) { };
};