簡體   English   中英

如何防止通過鼠標單擊更改選項卡

[英]how to prevent from changing tab by mouse click

我的問題可能很愚蠢,但我試圖通過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;
}

如果有人知道如何做到這一點,請告訴我。 提前致謝。

您可以在ChangeListener幫助下通過鼠標阻止更改標簽,如下所示:

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

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

HOLD_INDEX是以編程方式選擇的選項卡的索引。

當您嘗試選擇另一個選項卡時,它將重新選擇為HOLD_INDEX

你可以嘗試幾件事......

你可以

將您不希望選中的選項卡設置為禁用...

pane.setEnabled(indexOfTab, false);

你可以

提供您自己的SingleSelectionModel ,您可以從中控制可以選擇哪些選項卡

另一種可能是使用空實現覆蓋addMouseListener(...)以防止任何鼠標交互。 示例代碼如下:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM