在Java中的另一个方法中访问实例变量
我正在用Java编写GUI。一个方法初始化并显示表单:在Java中的另一个方法中访问实例变量,java,Java,我正在用Java编写GUI。一个方法初始化并显示表单: public class launchQMBPMN extends CytoscapeAction { private JComboBox termDB; public launchQMBPMN(QMBPMN SaddleSum) { super("SaddleSum"); setPreferredMenu("Plugins"); } public class buttonListener imple
public class launchQMBPMN extends CytoscapeAction {
private JComboBox termDB;
public launchQMBPMN(QMBPMN SaddleSum) {
super("SaddleSum");
setPreferredMenu("Plugins");
}
public class buttonListener implements ActionListener{
public void actionPerformed(ActionEvent e){
JFrame hello = new JFrame();
JLabel test = new JLabel(termDB.getSelectedItem());
test.add(hello);
hello.show();
}
}
public void actionPerformed(ActionEvent e) {
CytoscapeDesktop desktop = Cytoscape.getDesktop();
InteractionTools tools = new InteractionTools();
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.LINE_START;
c.weightx = 0.5;
buttonListener buttonPressed = new buttonListener();
// TERM DATABASE AND WEIGHTS
JPanel qmbpTermsPanel = new JPanel(new GridBagLayout());
termDB = new JComboBox(tools.discoverTermDatabases());
c.gridx = 1;
c.gridy = 0;
qmbpTermsPanel.add(termDB, c);
...
我想访问buttonListner类中的“termDB”。我如何做到这一点?只需使用它的名称访问它,因为它位于外部类中
另请参见:只需使用它的名称访问它,因为它位于外部类中
另请参见:您可以创建ButtonListener的子类,并在创建时将termDB传递给它,或者设置它
或者,您可以在需要button侦听器的地方定义一个匿名内部类,并将termDB设置为final,它将在ButtonListener实现中可用。或者,您可以像在我介绍的第一个选项中一样,将termDB引用传递给匿名内部类。您可以创建ButtonListener的子类,并在创建时将termDB传递给它,或者设置它
或者,您可以在需要button侦听器的地方定义一个匿名内部类,并将termDB设置为final,它将在ButtonListener实现中可用。或者,您可以像在我介绍的第一个选项中一样,将termDB引用传递给匿名内部类。在这里发布时访问它。一些评论:
show
方法的JFrame
(实际上是java.awt.Window
)已被弃用,请使用setVisible(true)代码>取而代之
test.add(hello)代码>是您真正需要的。它是?它将框架添加到标签中
termDB.getSelectedItem()
返回一个对象
,JLabel
构造函数需要一个字符串:termDB.getSelectedItem().toString()
按您在此处发布的方式访问它。一些评论:
show
方法的JFrame
(实际上是java.awt.Window
)已被弃用,请使用setVisible(true)代码>取而代之
test.add(hello)代码>是您真正需要的。它是?它将框架添加到标签中
termDB.getSelectedItem()
返回一个对象
,JLabel
构造函数需要一个字符串:termDB.getSelectedItem().toString()
您可以执行
CytoscapeAction。这个.termDB
@falmari:这已经过于复杂了。顺便说一下,按照惯例,您应该让类名以大写开头,而变量名以小写开头。@thejh:更清楚,有时,如果有一个本地名称屏蔽了外部类的名称,则有必要这样做。您可以执行CytoscapeAction。这个.termDB
@falmari:这已经过于复杂了。顺便说一句,按照惯例,您应该使类名以大写开头,变量名以小写开头。@thejh:更清楚,有时,如果有一个本地名称掩盖了外部类的名称,这是必要的。我不觉得很傻吗。当我得到符号not found错误时,编译器引用的是getSelectedItem()方法,而不是termDB。谢谢。我不觉得自己很傻。当我得到符号not found错误时,编译器引用的是getSelectedItem()方法,而不是termDB。谢谢。在这个错误之后,你已经成功地抢先击中了我想弄明白的一切。谢谢在这个bug之后,你已经成功地抢先击中了我想要弄明白的一切。谢谢