从另一个类java访问组件

时间:2014-03-04 14:20:06

标签: java swing class components

所以我试图从名为Calculator的类中访问JComboBox。 JComboBox本身位于一个方法中,而在另一个名为GUI的类中的JPanel中。 感谢。

这是我的代码

public class GUI {
public static JFrame MainFrame(){

//the endless code

frame.add(konvpanel();

return frame;

}

public static JPanel konvpanel(){
    JPanel a = new JPanel();

String [] itembox = {"...","XXX","===","|||"};
        JComboBox nnn = new JComboBox(itembox);

a.add(nnn);

return a;
  }
}

提前感谢。

2 个答案:

答案 0 :(得分:2)

您无法访问nnn,因为该方法范围之外的引用不存在。 所以你有两个选择:

  • 在其他位置引用了combox,例如作为实例变量或(ouch)静态变量
  • 尝试将面板放置在框架内,并在面板内找到组合框(例如,让所有儿童进入并检查其类型和位置)。

我选择第一选。

另一个选项,取决于为什么,您需要访问组合框,可能是为组合框添加一个侦听器,并将Calculator实例的引用添加到该侦听器好。然后,无论何时触发您注册的事件,您都会将该信息传递给计算器。

答案 1 :(得分:0)

如果您要访问JComboBox,请按以下方式声明。

public class GUI {
  public static JComboBox nnn;
  public static JPanel konvpanel(){
     JPanel a = new JPanel();

    String [] itembox = {"...","XXX","===","|||"};
    nnn = new JComboBox(itembox); /*refer the previously declared variable*/

    a.add(nnn);

   return a;
  }      

}