从外部更改 TabbedPane 索引 class
Changing a TabbedPane index from an outer class
我在 class 中有一个名为 App 的 TabbedPane,我想 运行 这个 class 中的一个方法。我从 class Login 添加了两个带有 JPanel 的选项卡和一个空选项卡。这是 class:
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
}
}
现在我想 运行 从外部 class 调用一个名为 changeFocus()
的方法。 A 向 Login class 添加了一个 actionListener,其构造函数如下:
public Login() {
logInButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
App.changeFocus(1);
}
});
}
现在我问为什么这不起作用,changeFocus()
必须是 static。如果我将其更改为 static 为什么 JTabbedPane 不能是静态的并抛出错误。
只需将 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);
}
});
}
我在 class 中有一个名为 App 的 TabbedPane,我想 运行 这个 class 中的一个方法。我从 class Login 添加了两个带有 JPanel 的选项卡和一个空选项卡。这是 class:
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
}
}
现在我想 运行 从外部 class 调用一个名为 changeFocus()
的方法。 A 向 Login class 添加了一个 actionListener,其构造函数如下:
public Login() {
logInButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
App.changeFocus(1);
}
});
}
现在我问为什么这不起作用,changeFocus()
必须是 static。如果我将其更改为 static 为什么 JTabbedPane 不能是静态的并抛出错误。
只需将 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);
}
});
}