Skip to content

This is a project to make initializing and traversing a GUI much simpler. The goal is to shorten multiple lines of code and make the hierarchy easier to navigate.

Notifications You must be signed in to change notification settings

pseay/HierarchyComponents

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HierarchyComponents

This is a project to make initializing and traversing a GUI much simpler. The goal is to shorten multiple lines of code and make the hierarchy easier to navigate.

Benefits of hierarchy components:

  • You can easily tell which components are children of which other components
  • You don't have to make a component & add it to a container
    • Adding is handled automatically

Initializing a Swing form before Hierarchy Components:

class Swing{
    public static void main(String[] args) {
        JFrame frame = new JFrame("Frame Title");
        JPanel panel = new JPanel();
        JButton button1 = new JButton("Click me!");
        JButton button2 = new JButton("No, click me!");        
        JButton button3 = new JButton("CLICK ME!");        

        button2.addActionListener((e) ->
            System.out.println("Thanks for clicking me!")
        );        

        panel.add(button1);
        panel.add(button2);
        panel.add(button3);
        frame.add(panel);
        //showing it
        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

Initializing a Swing form after Hierarchy Components:

class Hierarchy {
    public static void main(String[] args) {
        HFrame frame = new HFrame("Frame Title",
            notNamed(new HPanel(
                named("button1", new HButton("Click me!")),
                named("button2", new HButton("No, click me!", (e) -> 
                    System.out.println("Thanks for clicking me!")
                )),
                named("button3", new HButton("CLICK ME!"))
            ))
        );
        //showing it
        frame.open(WindowConstants.EXIT_ON_CLOSE, true);
    }
}

You may be wondering how to access the variables after you made them. When you make a new HFrame, it automatically creates a Navigator with all the components according to their name.

Here is an example:

class NavEx {
    public static void main(String[] args){
      //...code above
      Navigator nav = frame.getNavigator();
      
      //SINGLES
      //getting one component by name
      JComponent button1 = nav.getSingle("button1");
      //getting one component by name and class
      HButton button1asButton = nav.getSingleByClass("button1", HButton.class);
      
      //LISTS
      //getting a list by name
      List<JComponent> labels = nav.getList("label");
      //getting list by class
      List<JLabel> jLabels = nav.getListByClass(JLabel.class);
      //getting list by name and class
      List<JLabel> jLabelsNamedLabel = nav.getListByClass("label", JLabel.class);
    }
}

About

This is a project to make initializing and traversing a GUI much simpler. The goal is to shorten multiple lines of code and make the hierarchy easier to navigate.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages