У меня есть дизайн следующим образом.
Когда я нажимаю визуализацию, я получаю график рассеяния. Теперь я хочу изменить график, когда пользователь нажимает на вкладки. Я хочу, чтобы каждая вкладка обрабатывала другой график. Как я могу это сделать? Основная проблема заключается в том, что я не могу добавить слушателя мыши, чтобы добавлять действия к каждой вкладке, то есть к моей проблеме. Как я могу это сделать?
Вкладки меняются без мыши. Обычно с помощью программной логики, например, когда сначала отображается вкладка с выбором по умолчанию или с клавиатурной мнемоникой, назначенной вкладке. Добавление слушателя мыши пропустит эти случаи.
Поскольку Стефан предложил добавить Changelistener в JTabbedPane, и вы будете уведомлены независимо от того, когда или что вызывает изменения вкладок.
tabbedPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
System.out.println("Tab index: " + tabbedPane.getSelectedIndex());
}
});
Пример здесь.
Чтобы изменить контекстный вид на основе выбранного вкладки (график рассеяния), вы можете:
Если график один и тот же, но данные изменяются, то обновляйте модель за графиком и обновляйте вид сюжета. API с шаблонами MVC, такими как JFreeChart, позволит вам это сделать.
Если графики или представления существенно отличаются для каждой вкладки, используйте CardLayout для переключения видов сюжетов.
JTabbedPane ChangeListener
? Он получает уведомление при изменении выбранной вкладки. В этом слушателе вы можете проверить текущую вкладку и показать соответствующий график.