Эта статья будет полезна для удаления нежелательных вкладок при нажатии правой кнопки мыши.
Остановить правый клик по событию на JTabbedPane
Мне понравилось добавлять больше об удалении слушателей мыши.
Попробуйте переопределить метод, а не удалять его. Это лучше для будущих обновлений кода.
Проблема в том, что у BasicTabbedPaneUI есть внутренний класс, называемый Handler. Этот класс обработчика переопределяет Mouse Listener.
Чтобы остановить щелчок правой кнопкой мыши и выбрать всплывающее меню; нам нужно переопределить этот метод в BasicTabbedPaneUI,
protected MouseListener createMouseListener() {
return getHandler();
}
Чтобы улучшить внешний вид, мы должны переопределить класс SynthTabbedPaneUI.
SynthTabbedPaneUI - это расширение BasicTabbedPaneUI.
Итак, наш внутренний класс такой,
private class SynthTabbedPaneUIWrapper extends SynthTabbedPaneUI
{
private MouseAdapter menuAdapter;
private MouseAdapter getMenuAdapter()
{
if (menuAdapter == null)
{
menuAdapter =
new MouseAdapter()
{
@Override
public void mouseReleased(final MouseEvent e)
{
//implement to stop right click tab selection
//implement to show pop up menu
}
};
}
}
@Override
protected MouseListener createMouseListener()
{
return getMenuAdapter();
}
}
После этого мы можем установить наш объект пользовательского интерфейса в TabbedPane.
tabbedPane.setUI(new SynthTabbedPaneUIWrapper());