﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-280211429-随笔分类-java</title><link>http://www.blogjava.net/280211429/category/13848.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2007 18:24:47 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2007 18:24:47 GMT</pubDate><ttl>60</ttl><item><title>二进制</title><link>http://www.blogjava.net/280211429/archive/2006/10/27/77674.html</link><dc:creator>国强</dc:creator><author>国强</author><pubDate>Fri, 27 Oct 2006 08:01:00 GMT</pubDate><guid>http://www.blogjava.net/280211429/archive/2006/10/27/77674.html</guid><wfw:comment>http://www.blogjava.net/280211429/comments/77674.html</wfw:comment><comments>http://www.blogjava.net/280211429/archive/2006/10/27/77674.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/280211429/comments/commentRss/77674.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/280211429/services/trackbacks/77674.html</trackback:ping><description><![CDATA[int   i=8;     //测试数据   <br />String   s   =   String.valueOf(Integer.toBinaryString(i));     //int   to   binary   <br />System.out.println(s);   <br />          <br />String   ss   =   "11";   <br /> int   ii   =   Integer.parseInt(ss,2);  <br />//binary   to   int，parseInt中2代表2进制，可使用2,8,10,16不同参数   <br /> System.out.println(ii);   <img src ="http://www.blogjava.net/280211429/aggbug/77674.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/280211429/" target="_blank">国强</a> 2006-10-27 16:01 <a href="http://www.blogjava.net/280211429/archive/2006/10/27/77674.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWT中的Dispose操作法则</title><link>http://www.blogjava.net/280211429/archive/2006/10/17/75686.html</link><dc:creator>国强</dc:creator><author>国强</author><pubDate>Tue, 17 Oct 2006 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/280211429/archive/2006/10/17/75686.html</guid><wfw:comment>http://www.blogjava.net/280211429/comments/75686.html</wfw:comment><comments>http://www.blogjava.net/280211429/archive/2006/10/17/75686.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/280211429/comments/commentRss/75686.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/280211429/services/trackbacks/75686.html</trackback:ping><description><![CDATA[法则一：如果你创建了他，那么就要释放他<br />在本章节的前一部分，你知道了创建SWT控件，相应的本地控件也被创建了。也就是说，调用了SWT的构造函数，底层的本地资源也被创建了。所以如果你写下如下代码，那么你就创建了一个SWT颜色对象，那么也就在系统的底层资源里分配了一个颜色资源：<br />Color color = new Color(display, 255, 0, 0); // Create a red Color<br />法则一说明了如果你创建了他，那么你就要在使用完时释放他，像下面一样：<br />color.dispose(); // I create it, so I dispose it<br />但是，如果你没有使用构造函数来申请资源，你就不能显式的释放他。比如，考虑下面的代码：<br />Color color = display.getSystemColor(SWT.COLOR_RED); // Create a red Color<br />再一次，获得了底层平台的颜色资源，但是没有分配他。法则一就说不能释放他。为什么不呢？因为这个不属于你-你只是借用了这个资源，其他的对象有可能正在使用它或者将要使用它。释放这个资源会变得非常严重的。<br /><br /><br />法则二：释放了父控件，子控件也被释放<br />对每一个使用new创建的控件都使用dispose()会变得非常繁琐，会使得SWT很快被抛弃。但是，SWT的设计者意识到了这一点，创建了一种逻辑上层叠的自动释放机制。这意味着，当一个Shell被释放了，所有与Shell有关的控件都被自动释放了。你会发现，永远也不会使用label.dispose()在“Hello World”程序里，甚至你使用了new来创建一个Label对象。当用户关闭了Shell，Label控件自动的释放了。<br />也许你在想，你永远不需要调用dispose()，这部分代码只是在浪费空间。实际上，有可能写一些程序，所有的资源都只有一个父类，并且这些资源都会自动释放。但是，考虑一下下面的改变Text中字体的代码。如下：<br />Text text = new Text(shell, SWT.BORDER); //Create the text field<br />Font font = new Font(display, ”Arial”, 4, SWT.BOLD); //Create the new font<br />text.setFont(font); //Set the font into the text field<br />这个字体对象创建时没有父类，所以不会被自动释放，甚至当Shell被关闭了，Text对象调用了dispose()。也许你会对使用font这个负担而发怒，但是考虑到text没有理由要对font负责-font不属于他。实际上，你也许会使用这个Font对象在各种各样的控件上，自动释放会引发一系列的问题。<br /><br />另外：<br />如果Java包裹的本地控件依然在活动，而他所属于的Shell被释放了，将发生什么情况呢？或者手动调用控件的dispose方法会怎么样呢？本地控件会被释放吗？我们是否可以调用java对象而他的底层本地控件不存在？<br />答案当然是：可以！如果你调用一个对象而他的本地控件已经释放，会引出一些麻烦。一旦一个控件被释放了，甚至他依然在活动，对他做什么都没有用。是的，Java对象依然可用，但是底层的对应点已经释放了。那么就会得到一个SWTException，显示为“Widget has been disposed”。考虑Listing 3-2的代码。<br />Listing 3-2:Broken.java<br /><div style="FONT-SIZE: 9px; MARGIN-LEFT: 20px"><b>CODE:</b></div><div class="quote" id="code3">import org.eclipse.swt.*;<br />import org.eclipse.swt.layout.*;<br />import org.eclipse.swt.widgets.*;<br />public class Broken<br />{<br />public static void main(String[] args)<br />{<br />  Display display = new Display();<br />  Shell shell = new Shell(display);<br />  shell.setLayout(new RowLayout());<br />  Text text = new Text(shell, SWT.BORDER);<br />  shell.open();<br />  while (!shell.isDisposed())<br />  {<br />  if (!display.readAndDispatch())<br />  {<br />    display.sleep();<br />  }<br />  }<br />  System.out.println(text.getText()); // PROBLEM!<br />  display.dispose();<br />  }<br />}</div><br />代码可以编译和运行，但是在关闭了主窗口后控制台会打印出以下的错误：<br />Org.eclipse.swt.SWTException: Widget is disposed<br />at org.eclipse.swt.SWT.error(SWT.java:2332)<br />at org.eclipse.swt.SWT.error(SWT.java:2262)<br />at org.eclipse.swt.widgets.Widget.error(Widget.java:385)<br />at org.eclipse.swt.widgets.Control.getDisplay(Control.java:735)<br />at org.eclipse.swt.widgets.Widget.isValidThread(Widget.java:593)<br />at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:315)<br />at org.eclipse.swt.widgets.Text.getText(Text.java:705)<br />at Broken.main(Verison.java:24)<br /><br />需要注意的，当你在Windows XP上运行这个程序，你会得到一个对话框显示javaw.exe出现了问题，需要关闭，你是否愿意发送错误报告到Microsoft？<br /><img src ="http://www.blogjava.net/280211429/aggbug/75686.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/280211429/" target="_blank">国强</a> 2006-10-17 16:51 <a href="http://www.blogjava.net/280211429/archive/2006/10/17/75686.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jdom</title><link>http://www.blogjava.net/280211429/archive/2006/10/17/75673.html</link><dc:creator>国强</dc:creator><author>国强</author><pubDate>Tue, 17 Oct 2006 08:13:00 GMT</pubDate><guid>http://www.blogjava.net/280211429/archive/2006/10/17/75673.html</guid><wfw:comment>http://www.blogjava.net/280211429/comments/75673.html</wfw:comment><comments>http://www.blogjava.net/280211429/archive/2006/10/17/75673.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/280211429/comments/commentRss/75673.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/280211429/services/trackbacks/75673.html</trackback:ping><description><![CDATA[  /*读*/<br />  SAXBuilder builder = new SAXBuilder();<br />  Document doc = null;<br />  try {<br />      doc = builder.build("config.xml");<br />  } catch (Exception e) {<br />      e.printStackTrace();<br />      return;<br />  }<br />  //获得这个文档的根元素<br />  Element printer = doc.getRootElement();<br />  Element name = printer.getChild("name");<br />  this.name = name.getText();<br /><br />  /*写*/<br />  SAXBuilder builder = new SAXBuilder();<br />  Document doc;<br />  try {<br />      doc = builder.build("config.xml");<br />  } catch (Exception e) {<br />        return;<br />  }<br />  Element printer = doc.getRootElement();<br />  Element name = printer.getChild("name");<br />  name.setText( PrintParameter.getInstance().getName() );<br />        <br />  XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat().setEncoding("utf-8"));<br /> try {<br />      outputter.output(doc, new java.io.FileOutputStream("config.xml"));<br />  } catch (Exception e) {<br />  }<img src ="http://www.blogjava.net/280211429/aggbug/75673.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/280211429/" target="_blank">国强</a> 2006-10-17 16:13 <a href="http://www.blogjava.net/280211429/archive/2006/10/17/75673.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Properties类</title><link>http://www.blogjava.net/280211429/archive/2006/10/17/75672.html</link><dc:creator>国强</dc:creator><author>国强</author><pubDate>Tue, 17 Oct 2006 08:07:00 GMT</pubDate><guid>http://www.blogjava.net/280211429/archive/2006/10/17/75672.html</guid><wfw:comment>http://www.blogjava.net/280211429/comments/75672.html</wfw:comment><comments>http://www.blogjava.net/280211429/archive/2006/10/17/75672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/280211429/comments/commentRss/75672.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/280211429/services/trackbacks/75672.html</trackback:ping><description><![CDATA[
		<p>  /*读*/ <br />  Properties settings = new Properties();<br />  String name = "printConfig";<br />  try {<br />      FileInputStream in = new FileInputStream(name + ".properties"); <br />      settings.load(in);<br />      String value = Integer.parseInt( (String) settings.get("name") ;</p>
		<p>  } catch (IOException e) {e.printStackTrace();}</p>
		<p>  /*写*/<br />  Properties settings = new Properties();<br />  String name = "printConfig";<br />  FileOutputStream out = null;<br />  try {<br />      out = new FileOutputStream( name + ".properties" );<br />      settings.store(out,"");<br />  } catch (Exception e1) {<br />      e1.printStackTrace();<br />  }</p>
<img src ="http://www.blogjava.net/280211429/aggbug/75672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/280211429/" target="_blank">国强</a> 2006-10-17 16:07 <a href="http://www.blogjava.net/280211429/archive/2006/10/17/75672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>