banner
Opera - The Fastest Browser on Earth
Search Now:
Amazon Logo

Tutorial

How to make components draggable and resizeable?
How to create translucent button?
How to create vetical button?
How to make synchronized JToggleButton(s) and JCheckBoxMenuItem(s)?
How to create GSplitPane
How to add component to GSplitPane
How can I make that Window follows its owner Frame (or another Window)?
How to create file tree?
Is it possible to create URL tree?
Is it possible to traverse ZIP or JAR files (with file or URL tree)?
Is it possible to extend Dynamic Tree Framework?
How to create FloatingWindow?
How to create ToolBar?

How to make components draggable and resizeable?

//With JGui it is very easy
//because it contains ready to use handlers.
//first create our component
JPanel panel = new JPanel();

//important - to make it resizeable Border must be set
panel.setBorder(new LineBorder(Color.gray));

//get SharedDragHandler instance
SharedDragHandler dh = SharedDragHandler.getInstance();

//and register
dh.register(panel);

//create ResizeHandler
ResizeHandler rh = new ResizeHandler(panel);
top

How to create translucent button?

Use ButtonRenderer:
//create JButton
JButton button = new JButton("click me");

//create ButtonRenderer
ButtonRenderer br = new ButtonRenderer(button);

//set alpha and command to use it
br.setAlpha(0.7f);
br.setUseAlpha(true);

top

How to create vetical button?

There are two ways to it: a) use ButtonRenderer:

//create JButton
JButton button = new JButton("click me");

//create ButtonRenderer
ButtonRenderer br = new ButtonRenderer(button);

//make it vertical
br.setAxis(RainLayout.Y_AXIS);


b) use ButtonPanel:

//create ButtonPanel
ButtonPanel bp = new ButtonPanel();

//and make it vertical
bp.setAxis(RainLayout.Y_AXIS);

//create JButton
JButton button = new JButton("click me");

//and add it to ButtonPanel
bp.add(button);

top

How to make synchronized JToggleButton(s) and JCheckBoxMenuItem(s)?

USe SelectableAction, SToggleButton and SCheckBoxMenuItem:
   //create shared Action
   SelectableAction action = new SelectableAction("print") {
       public void actionPerformed(ActionEvent e) {
           //do something here
       }
   };

   //create SToggleButton(s)
   SToggleButton toggleButton = new SToggleButton(action);

   //create SCheckBoxMenuItem(s)
   SCheckBoxMenuItem item = new SCheckBoxMenuItem(action);
top

How to create GSplitPane

Use factory methods:
//create lightweight GSplitPane:
Container c0 = GSplitPane.createLightweightSplitPane();
//create lightweight GSplitPane:
Container c1 = GSplitPane.createHeawyweightSplitPane();
top

How to add component to GSplitPane

Use SplitPaneConstraints:
   //at least 2 things must be defined:
   //split direction (vertical/horizontal)
   //and align (left/right or top/bottom).
   //It is also possible to specify component,
   //which should be "splitted", if null is passed instead,
   //then new component added as root.
   SplitPaneConstraints constraints =
       new SplitPaneConstraints(
           null,
           SplitConstants.VERTICAL_SPLIT,
           SplitConstants.ALIGN_LEFT);
top

How to make that one Window follows his owner Frame (or another Window)?

Use FollowHandler:
   //create Frame and Window
   Frame frame = new Frame("owner");
   Window w = new Window(frame);

   //create FollowHandler
   FollowHandler fh = new FollowHandler(frame);

   //and register window
   fh.register(w);

   //then activate handler
   fh.setActive(true);
top

How to create file tree?

   //get root directory
   File rf =
      FileSystemView.getFileSystemView().getRoots()[0];

   //create root TreeNode and populate it
   HTreeNode root = new HTreeNode(rf);
   try {
      root.populate(true);
   }
   catch (IOException ex) {
      ex.printStackTrace();
   }

   //create JTree
   final JTree fileTree = new JTree(
      new DefaultTreeModel(root));

   //hear to expand events
   fileTree.addTreeExpansionListener(
      new DefaultTreeExpansionHandler());
   //better look
   fileTree.setCellRenderer(new FileTreeCellRenderer());
   //and tooltips
   new TLToolTipManager(fileTree);
top

Is it possible to create URL tree?

Yes, it is the same as creating file tree, but, instead of File, pass URL Object to HTreeNode constructor.
   //create URL
   URL url = new URL("http://www.imagero.com/");
   //create root TreeNode and populate it
   HTreeNode root = new HTreeNode(url);
top

Is it possible to traverse ZIP or JAR files (with file or URL tree)?

Yes.
top

Is it possible to extend Dynamic Tree Framework?

Yes, DTF can be extended by implementing and registering new Handler.
   //registering FileHandler:
   //instantiate
   FileHandler handler = new FileHandler();
   //and register by HandlerFactory
   HandlerFactory.register(handler, new Class[]{File.class});
top

How to create FloatingWindow?

Here is complete example:
   FloatingWindowManager winmgr =
       new FloatingWindowManager("Windows");
   IconifyBar iconifyBar = new IconifyBar(RainLayout.X_AXIS);

   JFrame frame = new JFrame();
   //define AnchorOptions
   AnchorOptions aopt = new AnchorOptions();
   //Dock Container
   aopt.put(FloatingWindow.KEY_ANCHOR, frame.getContentPane());
   //titlebar placement (docked)
   aopt.put(FloatingWindow.KEY_TITLE_BAR_PLACEMENT,
       BorderLayout.NORTH);
   //orientation
   aopt.put(FloatingWindow.KEY_HORIZONTAL,
       Boolean.valueOf(true));
   //constraints used to add FloatingWindow to dock Container
   aopt.put(FloatingWindow.KEY_CONSTRAINTS,
       BorderLayout.CENTER);

   //create FloatingWindow
   final FloatingWindow fw =
       new FloatingWindow(frame,
           new AnchorOptions[]{aopt}, true) {
      //with dummy ContentPane
      protected ContentPane createContentPane() {
         return new AbstractContentPane(new BorderLayout()) {
            public AbstractButton add(Action a) {
               JButton comp = new JButton(a);
               super.add(comp);
               return comp;
            }

            public void setHorizontal(boolean horizontal) {
            }

            public Dimension getPreferredSize() {
               return new Dimension(100, 100);
            }
         };
      }
   };
   //dont dock automaticaly, just show readiness
   fw.setDragOverAction(
       FloatingWindowDragHandler.DRAG_OVER_SHOW_ARMED);
   //some content for FloatingWindow
   fw.getContentPane().getContainer().add(
       new JScrollPane(new JTextArea(20, 40)));
   //set title
   fw.setTitle("Window 0");
   //register by FloatingWindowManager
   winmgr.add(fw);
   //make it resizeable
   fw.setResizeable(true);
   //and register by IconifyBar
   iconifyBar.register(fw, new AbstractAction(fw.getTitle()) {
      public void actionPerformed(ActionEvent e) {
         fw.setVisible(true);
      }
   });
top

How to create ToolBar?

   public ToolBar createToolBar( JFrame owner,
                                 String title,
                                 Action[] actions,
                                 AnchorOptions[] options) {
      //create ToolBar
      ToolBar toolbar = new ToolBar(owner, options) {
         //ButtonPanel as ContentPane
         protected ContentPane createContentPane() {
            ButtonPanel toolBarPanel = new ButtonPanel();
            return toolBarPanel;
         }
      };
      //add actions
      toolbar.add(actions);
      //and set title
      toolbar.setTitle(title);

      ButtonPanel contentPane =
          (ButtonPanel) toolbar.getContentPane();
      RainLayout toolbarLayout =
          (RainLayout) contentPane.getLayout();
      //one row only
      toolbarLayout.setLayoutPolicy(
          RainLayout.LAYOUT_POLICY_COMPUTE);
      return toolbar;
   }
top