Изменение индекса TabbedPane из внешнего класса - PullRequest
0 голосов
/ 17 октября 2019

У меня есть TabbedPane в классе с именем App , и я хочу запустить метод в этом классе. Я добавил две вкладки с JPanel из класса Логин и одну пустую. Вот класс:

public class App {
private static JTabbedPane tabbedPane;
public JPanel mainPanel;

public App(){
    tabbedPane.addTab("Login", new Login().mainPanel);
    tabbedPane.addTab("test", new JPanel());
    changeFocus(0);
}

public void changeFocus(int i){
    //CODE HERE
}

}

Теперь я хочу запустить метод с именем changeFocus() из внешнего класса. Добавлен actionListener в класс Login с таким конструктором:

public Login() {
        logInButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
               App.changeFocus(1);
            }
        });
    }

Теперь я спрашиваю, почему это не работает, и changeFocus() должно быть static . И если я изменю его на static , почему JTabbedPane не может быть статическим и выдает ошибку.

1 Ответ

1 голос
/ 17 октября 2019

Просто передайте App в качестве аргумента конструктору Login:

 tabbedPane.addTab("Login", new Login(this).mainPanel);

, а затем:

public Login(App app) {
    logInButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
           app.changeFocus(1);
        }
    });
}
...