【发布时间】:2016-03-21 23:47:45
【问题描述】:
我遇到了问题并找到了解决方案,但我不明白为什么下面的代码不起作用。 我想要做的是,当在“Administration.class”中按下按钮时,选项卡正在切换。 我在“Main.class”中添加了一个 JTabbedPane。它被声明为私有变量。
private JTabbedPane JPT;
然后我有一个简单的方法,它会在调用时更改选项卡:
public void SetPane() {
JTP.setSelectedIndex(2);
}
然后我在 Administration.class 中创建 Main.class 的一个对象,并在按下按钮时调用此方法:
btnRework.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Main m = new Main();
m.SetPane();
}
});
但这不起作用。什么都没有发生,当按钮被点击时,我什至没有出错。
这有效: 主类
public static JTabbedPane JTP;
管理类
btnRework.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Main.JTP.setSelectedIndex(2);
}
});
为什么 example first 不起作用,也许你们有一个链接,我可以在其中查看描述此问题的内容。如果您只想处理变量及其方法,那么更好的方法是什么? 提前致谢!
主类:
public class Main extends JDialog {
private static final long serialVersionUID = 1L;
private Home home = new Home();
private Insertation insertation = new Insertation();
private Edit edit = new Edit();
private Administration administration = new Administration();
private Addition addition = new Addition();
public static JTabbedPane JTP;
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
Main dialog = new Main();
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Create the dialog.
*/
public Main() {
super(null, java.awt.Dialog.ModalityType.TOOLKIT_MODAL);
setResizable(false);
setSize(1030, 720);
getContentPane().setLayout(new BorderLayout());
setTitle("Ebay Manager");
JTP = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
JTP.addTab("Home", home);
JTP.addTab("Inserat", insertation);
JTP.addTab("Bearbeitung", edit);
JTP.addTab("Verwaltung", administration);
JTP.addTab("Zusatz", addition);
getContentPane().add(JTP);
}
}
Administration.class:
public class Administration extends JPanel {
private static final long serialVersionUID = 1L;
private JButton btnRework;
private Main main;
/**
* Create the panel.
*/
public Administration() {
setLayout(null);
setSize(1000, 650);
setDoubleBuffered(true);
btnRework = new JButton("Bearbeiten");
btnRework.setBounds(42, 571, 116, 32);
add(btnRework);
btnRework.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
main.SetPane();
}
});
}
}
【问题讨论】:
-
您基本上想了解静态字段和非静态字段之间的区别(类的所有对象的静态内容都相同,每个对象的非静态字段可能不同)。一般来说,您应该避免使用静态字段。
-
常量除外。
标签: java swing actionlistener jtabbedpane