Я использую Java swing в первый раз, и у меня есть проблема, которую я не могу решить.изменить выбранную вкладку в JTabbedPane «автоматически»
У меня есть JTabbedPane с 3 вкладками, и мне нужно перейти на следующую вкладку «автоматически» в конце вычислений, которая начинается щелчком в JButton (на одной из вкладок). Я пытался использовать setSelectedIndex()
, но не работает. После того, как выбранная вкладка JButton (напечатанная в консоли eclipse) изменилась, но в GUI не действует.
Да, я попробовал validate()
, revalidate()
методы, даже метод repaint()
, но не работает
Вот пример моего кода
public class Tab1 extends JPanel {
//when click on this button the computing starts
JButton btn = new JButton("Compute...");
btn.addActionListener(new BtnListener());
add(btn);
}
Пример из JPanel который я добавлю в мой JTabbedPane
public class Window() {
private JFrame frame;
public Window() {
init();
}
private void init() {
frame = new JFrame();
JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
JPanel tab1 = new Tab1();
JPanel tab2 = new Tab2();
JPanel tab3 = new Tab3();
tabbedPane.addTab("tab 1", null, tab1, "tab1");
tabbedPane.addTab("tab2", null, tab2, "tab2");
tabbedPane.addTab("tab3", null, tab3, "tab3");
//add() all components
}
}
Пример моего окна
public class BtnListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
//make the computing
//then I need to change to next tab (tab2)
}
}
И мой Слушатель
Я надеюсь, вы понимаете мою проблему. Пожалуйста, помогите мне, я действительно не знаю, что я делаю, чтобы это сработало, и мне нужно это сделать.
Подробнее о multithreadin в swing здесь: http://docs.oracle.com/javase/tutorial/uiswing/concurrency/ –
Отправьте справку [MCVE] (http://stackoverflow.com/help/mcve). – alex2410