1 19 20 package examples.advanced; 21 22 import java.awt.Dimension ; 23 import java.awt.Toolkit ; 24 import java.awt.event.ActionListener ; 25 import java.awt.event.ActionEvent ; 26 27 import java.text.MessageFormat ; 28 import java.util.ResourceBundle ; 29 30 import javax.swing.Timer ; 31 32 37 public class MemoryView extends javax.swing.JFrame { 38 39 private static ResourceBundle bundle = ResourceBundle.getBundle ("examples.advanced.MemoryViewLocale"); 40 41 private static MessageFormat msgMemory = new MessageFormat (bundle.getString ("TXT_STATUS")); 42 43 44 private static final int UPDATE_TIME = 1000; 45 46 private Timer timer; 47 48 49 50 public MemoryView() { 51 initComponents (); 52 53 setTitle (bundle.getString ("TXT_TITLE")); 54 doGarbage.setText (bundle.getString ("TXT_GARBAGE")); 55 doRefresh.setText (bundle.getString ("TXT_REFRESH")); 56 doClose.setText (bundle.getString ("TXT_CLOSE")); 57 58 txtTime.setText (bundle.getString ("TXT_TIME")); 59 doTime.setText (bundle.getString ("TXT_SET_TIME")); 60 time.setText (String.valueOf (UPDATE_TIME)); 61 time.selectAll (); 62 time.requestFocus (); 63 64 updateStatus (); 65 66 timer = new Timer (UPDATE_TIME, new ActionListener () { 67 public void actionPerformed (ActionEvent ev) { 68 updateStatus (); 69 } 70 }); 71 timer.setRepeats (true); 72 73 pack (); 74 } 75 76 78 public void addNotify () { 79 super.addNotify (); 80 timer.start (); 81 } 82 83 85 public void removeNotify () { 86 super.removeNotify (); 87 timer.stop (); 88 } 89 90 91 private void updateStatus () { 92 Runtime r = Runtime.getRuntime (); 93 long free = r.freeMemory (); 94 long total = r.totalMemory (); 95 96 while (total > Integer.MAX_VALUE) { 98 total = total >> 1; 99 free = free >> 1; 100 } 101 102 int taken = (int) (total - free); 103 104 status.setMaximum ((int)total); 105 status.setValue (taken); 106 107 text.setText (msgMemory.format (new Object [] { 108 new Long (total), 109 new Long (free), 110 new Integer (taken) 111 })); 112 text.invalidate (); 113 validate (); 114 } 115 116 121 private void initComponents() { jPanel1 = new javax.swing.JPanel (); 123 text = new javax.swing.JLabel (); 124 status = new javax.swing.JProgressBar (); 125 jPanel2 = new javax.swing.JPanel (); 126 doGarbage = new javax.swing.JButton (); 127 doRefresh = new javax.swing.JButton (); 128 doClose = new javax.swing.JButton (); 129 jPanel3 = new javax.swing.JPanel (); 130 txtTime = new javax.swing.JLabel (); 131 time = new javax.swing.JTextField (); 132 doTime = new javax.swing.JButton (); 133 134 addWindowListener(new java.awt.event.WindowAdapter () { 135 public void windowClosing(java.awt.event.WindowEvent evt) { 136 exitForm(evt); 137 } 138 }); 139 140 jPanel1.setLayout(new java.awt.BorderLayout ()); 141 142 jPanel1.add(text, java.awt.BorderLayout.SOUTH); 143 144 jPanel1.add(status, java.awt.BorderLayout.CENTER); 145 146 getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER); 147 148 doGarbage.addActionListener(new java.awt.event.ActionListener () { 149 public void actionPerformed(java.awt.event.ActionEvent evt) { 150 doGarbageActionPerformed(evt); 151 } 152 }); 153 154 jPanel2.add(doGarbage); 155 156 doRefresh.addActionListener(new java.awt.event.ActionListener () { 157 public void actionPerformed(java.awt.event.ActionEvent evt) { 158 doRefreshActionPerformed(evt); 159 } 160 }); 161 162 jPanel2.add(doRefresh); 163 164 doClose.addActionListener(new java.awt.event.ActionListener () { 165 public void actionPerformed(java.awt.event.ActionEvent evt) { 166 doCloseActionPerformed(evt); 167 } 168 }); 169 170 jPanel2.add(doClose); 171 172 getContentPane().add(jPanel2, java.awt.BorderLayout.SOUTH); 173 174 jPanel3.setLayout(new java.awt.BorderLayout (0, 20)); 175 176 jPanel3.add(txtTime, java.awt.BorderLayout.WEST); 177 178 jPanel3.add(time, java.awt.BorderLayout.CENTER); 179 180 doTime.addActionListener(new java.awt.event.ActionListener () { 181 public void actionPerformed(java.awt.event.ActionEvent evt) { 182 setRefreshTime(evt); 183 } 184 }); 185 186 jPanel3.add(doTime, java.awt.BorderLayout.EAST); 187 188 getContentPane().add(jPanel3, java.awt.BorderLayout.NORTH); 189 190 } 192 193 private void exitForm (java.awt.event.WindowEvent evt) { System.exit( 0 ); 195 } 197 private void setRefreshTime (java.awt.event.ActionEvent evt) { try { 199 int rate = Integer.valueOf (time.getText ()).intValue (); 200 timer.setDelay (rate); 201 } catch (NumberFormatException ex) { 202 time.setText (String.valueOf (timer.getDelay ())); 203 } 204 time.selectAll (); 205 time.requestFocus (); 206 } 208 209 private void doCloseActionPerformed (java.awt.event.ActionEvent evt) { exitForm (null); 211 } 213 214 private void doRefreshActionPerformed (java.awt.event.ActionEvent evt) { updateStatus (); 216 } 218 private void doGarbageActionPerformed (java.awt.event.ActionEvent evt) { System.gc (); 220 updateStatus (); 221 } 223 224 private javax.swing.JProgressBar status; 226 private javax.swing.JTextField time; 227 private javax.swing.JLabel txtTime; 228 private javax.swing.JButton doGarbage; 229 private javax.swing.JButton doClose; 230 private javax.swing.JButton doTime; 231 private javax.swing.JPanel jPanel3; 232 private javax.swing.JPanel jPanel2; 233 private javax.swing.JPanel jPanel1; 234 private javax.swing.JButton doRefresh; 235 private javax.swing.JLabel text; 236 238 239 241 public static void main(java.lang.String [] args) { 242 MemoryView mv = new MemoryView (); 243 Dimension d = Toolkit.getDefaultToolkit ().getScreenSize (); 244 Dimension m = mv.getSize (); 245 d.width -= m.width; 246 d.height -= m.height; 247 d.width /= 2; 248 d.height /= 2; 249 mv.setLocation (d.width, d.height); 250 mv.setVisible (true); 251 } 252 253 } 254 | Popular Tags |