tags:

views:

43

answers:

1

Can I do this without reference to the object in the constructor? In other words, any class inherited from FrmTaoChild when creating must to add the button on the toolbar of the main window

public class FrmTaoMain extends JFrame {
  JToolBar tbTask = new JToolBar();
  public FrmTaoMain(String Caption) {
     super(Caption);
     ... 
     FrmTaoChild FrmChild = new FrmTaoChild(tbTask,"test");

  }
}   

public class FrmTaoChild extends JInternalFrame {
  public FrmTaoChild(JToolBar tbTask, String Caption)
  {
    super (Caption);
    JButton btnTask = new JButton(Caption);
    tbTask.add(btnTask);
  }
}
+2  A: 

As discussed in How to Use Internal Frames, "Usually, you add internal frames to a desktop pane." Instead of passing JToolBar as a parameter, consider having FrmTaoChild supply an Action that FrmTaoMain can use for the corresponding JToolBar button. See How to Use Actions for more.

As an aside, variable names in Java usually begin with lower case.

public class FrmTaoChild extends JInternalFrame {

    private Action action;

    public FrmTaoChild(String caption) {
        super(caption);
        action = new AbstractAction(caption) { ... }
    }

    public Action getAction() {
        return action;
    }
}
trashgod