text: package org.xhtmlrenderer.demo.browser;
  
  import java.awt.BorderLayout;
  import java.awt.Insets;
  
  import javax.swing.JLabel;
  import javax.swing.JPanel;
  import javax.swing.SwingUtilities;
  
  public class BrowserStatus extends JPanel {
      private static final long serialVersionUID = 1L;
      
      public JLabel text, memory;
  
      public void init() {
          createComponents();
          createLayout();
          createEvents();
      }
  
      public void createComponents() {
          text = new JLabel("Status");
          memory = new JLabel("? MB / ? MB");
      }
  
      public void createLayout() {
          setLayout(new BorderLayout(5, 5));
          add("Center", text);
          add("East", memory);
      }
      
      public Insets getInsets() {
          return new Insets(3, 4, 3, 4);
      }
  
      public void createEvents() {
  
          new Thread(new Runnable() {
              public void run() {
                  while (true) {
                      try {
                          Runtime rt = Runtime.getRuntime();
                          long used = rt.totalMemory() - rt.freeMemory();
                          long total = rt.totalMemory();
  
                          used = used / (1024 * 1024);
                          total = total / (1024 * 1024);
  
                          final String text = used + "M / " + total + "M";
                          SwingUtilities.invokeLater(new Runnable() {
                              public void run() {
                                  memory.setText(text);
                              }
                          });
                          Thread.sleep(5000);
                      } catch (InterruptedException e) {
                          break;
                      }
                  }
              }
          }).start();
      }
  
  }
  