Java 如何防止鼠标单击更改选项卡
我的问题可能很傻,但我正试图在Java 如何防止鼠标单击更改选项卡,java,swing,mouselistener,Java,Swing,Mouselistener,我的问题可能很傻,但我正试图在JTabbedPane中通过鼠标单击禁用选项卡的更改。我在谷歌上搜索,但没有找到任何有用的答案。我试图添加空的MouseListener,但我仍然可以在鼠标单击时更改选项卡 我的代码如下: public JTabbedPane createTabbedPane() { JTabbedPane pane=new JTabbedPane(); pane.addTab("tab1",panel1); pane.addTab("tab2",panel
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;
}
JTabbedPane tabbedPane = new JTabbedPane() {
public synchronized void addMouseListener(MouseListener l) { };
};
我也试过这个:
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\u INDEX
您可以尝试以下几种方法
你可以
将不希望选中的选项卡设置为禁用
pane.setEnabled(indexOfTab, false);
你可以
提供您自己的选项卡,您可以从中控制可以选择哪些选项卡另一种可能是使用空实现覆盖
addMouseListener(…)
,以防止任何鼠标交互。示例代码可以如下所示:
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;
}
JTabbedPane tabbedPane = new JTabbedPane() {
public synchronized void addMouseListener(MouseListener l) { };
};
使用窗格的getComponents(),如果可以找到可以删除的鼠标侦听器,请尝试并出错。我知道如果你有一个自己的标签组件,你可以覆盖mouselistener(它在前台,所以selectListener不起作用),尽管仍然可以点击一个小边框。ChangeListener只接受用户输入吗?还是说选择标签完全被停用了呢?谢谢alex,它对我起了作用,我还尝试通过索引标签和禁用其他标签来启用标签,但在changelistener中不起作用。但非常感谢。@VighaneshGursale,
这对我来说很有效
——那么你该开始接受答案了。你问了20个问题,一次也没有接受答案。接受答案是说“谢谢你的帮助”并告诉论坛中的每个人问题已经解决的正确方式。