从另一个java类访问组件

从另一个java类访问组件,java,swing,class,components,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 =

因此,我试图从名为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;
  }
}

提前感谢。

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

  • 将对combox的引用放在别处,例如作为实例变量或(哎哟)静态变量
  • 尝试在框架内定位面板,在面板内定位组合框(例如,获取所有子项并检查其类型和位置)
我会选择第一种


根据需要访问组合框的原因,另一个选项可能是向组合框添加一个侦听器,并向该侦听器添加对
计算器
实例的引用。然后,每当您注册的事件被触发时,您都会将该信息传递给计算器。

在您的情况下,要访问
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;
  }      

}