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);
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);
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);
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);
How to create GSplitPane
Use factory methods://create lightweight GSplitPane: Container c0 = GSplitPane.createLightweightSplitPane(); //create lightweight GSplitPane: Container c1 = GSplitPane.createHeawyweightSplitPane();
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);
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);
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);
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);
Is it possible to traverse ZIP or JAR files (with file or URL tree)?
Yes.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});
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); } });
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; }
