我的问题可能很愚蠢,但我正在尝试在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;
}
如果有人知道如何做到这一点,请告诉我。提前谢谢。
答案 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) { };
};