Search code examples
javaswingjframejcomponent

Issue regarding adding Container on very Swing Page


public class POSToolBar extends JFrame {

/**
 * Launch the application.
 */
private BrowserToolBar toolBar;

public POSToolBar() {
    super("POS");
    Container content = getContentPane();
    content.setBackground(Color.white);
    toolBar = new BrowserToolBar();
    content.add(toolBar, BorderLayout.NORTH);
    pack();
    setVisible(true);
}
}

The above code generates a tool bar for me. Now I want to use this Tool Bar on every other swing page. I inherit/extends this class and use frame.add(new POSToolbar()) but it shows me an exception 'java.lang.IllegalArgumentException: adding a window to a container' How can I add this tool bar on my other swing pages ?


Solution

  • It must extend JToolBar not a JFrame if you want to use it in other classes.

    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import javax.swing.*;
    
    public class TestApplication extends JFrame {
        public static void main(String [] a){
            TestApplication ta = new TestApplication();
            TBar t = new TBar();
            ta.setLayout(new BorderLayout());
            ta.add(t,BorderLayout.NORTH);
            ta.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            ta.setPreferredSize(new Dimension(400,300));
            ta.pack();
            ta.setVisible(true);
        }
    }
    
    class TBar extends JToolBar{
        JButton b = new JButton("Hello");
    
        public TBar(){
            add(b);
        }
    }