??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩av一区二区三区在线观看,在线观看91久久久久久,91网站在线免费观看http://www.aygfsteel.com/jht/category/18831.html努力zh-cnWed, 02 Apr 2008 14:28:55 GMTWed, 02 Apr 2008 14:28:55 GMT60使用Eclipse做Java开发时QJDK1.6居然也不认识enumQ?/title><link>http://www.aygfsteel.com/jht/archive/2008/04/02/190453.html</link><dc:creator>jht</dc:creator><author>jht</author><pubDate>Wed, 02 Apr 2008 12:56:00 GMT</pubDate><guid>http://www.aygfsteel.com/jht/archive/2008/04/02/190453.html</guid><wfw:comment>http://www.aygfsteel.com/jht/comments/190453.html</wfw:comment><comments>http://www.aygfsteel.com/jht/archive/2008/04/02/190453.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jht/comments/commentRss/190453.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jht/services/trackbacks/190453.html</trackback:ping><description><![CDATA[如题Q有人真的遇到过q个问题Q开始被问到的时候还真觉得奇怪,心想不会啊,从JDK5开始就支持q个枚Dcd了啊Qؓ什么呢Q?br /><br />开始还怀疑他的JDK版本太低D的,但是一看是JDK1.6的,qh了几U。。?br /><br />然后我打开了Eclipse的Java~译选项Q?strong><font style="BACKGROUND-COLOR: #ffffff" color="#000080">发现原来遇到q个问题的h的Java~译U别讄的是1.4</font></strong>Q如下图Q当然就会出问题了?br /><br /><img height="566" alt="compile_setting.png" src="http://www.aygfsteel.com/images/blogjava_net/jht/compile_setting.png" width="563" border="0" /><br /><br />呵呵Q虽Ӟq是个小问题Q但是如果遇Cq真够新手郁闷一늚?br /><img src ="http://www.aygfsteel.com/jht/aggbug/190453.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jht/" target="_blank">jht</a> 2008-04-02 20:56 <a href="http://www.aygfsteel.com/jht/archive/2008/04/02/190453.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转蝲]用Swing~写反应灉|的图形用L?http://www.aygfsteel.com/jht/archive/2008/03/13/186115.htmljhtjhtThu, 13 Mar 2008 09:53:00 GMThttp://www.aygfsteel.com/jht/archive/2008/03/13/186115.htmlhttp://www.aygfsteel.com/jht/comments/186115.htmlhttp://www.aygfsteel.com/jht/archive/2008/03/13/186115.html#Feedback0http://www.aygfsteel.com/jht/comments/commentRss/186115.htmlhttp://www.aygfsteel.com/jht/services/trackbacks/186115.html 作者简?/b>

徐皓Q北京航I天大学计机pLU生Q你可以通过ertri@163.com与他联系?/p>

正文

不灵敏的囑Ş用户界面会降低应用程序的可用性。当以下现象出现的时候,我们通常说这个用L面反应不灉|?/p>

  1. 不响应事件的现象Q?
  2. 没有更新的现?/li>
[@more@]

q些现象在很大程度上与事件的处理Ҏ相关Q而在~写Swing应用E序的时候,我们几乎必然要编写方法去响应鼠标点击按钮Q键盘回车等事g。在q些Ҏ中我们要~写一些代码,在运行时去触发一些动作。常见动作包括查找,更新数据库等。在q篇文章中通过对一个实例的分析Q介l了一些基本概念,常见的错误以及提Z一个解x案?/p>

event-dispatching thread

我们一定要CQ事件响应方法的代码都是在event-dispatching thread中执行的Q除非你启用另一个线E?/p>

那么Q什么是event-dispatching thread呢?在《Java Tutorial》[1]中,作者给Z一条单一U程规则Q一旦一个Swinglg被实玎ͼrealizedQ,所有的有可能媄响或依赖于这个组件的状态的代码都应该在event-dispatching thread中被执行。而实C个组件有两种方式Q?/p>

  1. 寚w层组件调用show(), pack(), 或者setVisible(true)Q?
  2. 一个组件加C个已l被实现的容器中?

单一U程规则的根源是׃Swinglg库的大部分方法是对多U程不安全的Q尽存在一些例外。这些例外的情况可以在《Java Tutorial》[1]的相关章节找刎ͼq里不再展开?/p>

Z支持单一U程模型QSwinglg库提供了一个专门来完成q些与Swinglg相关的操作的U程Q而这一U程是event-dispatching thread。我们的事g响应Ҏ通常都是p一U程调用的,除非你自q写代码来调用q些事g响应Ҏ。在q里初学者经常犯的一个错误就是在事g响应Ҏ中完成过多的与修改组件没有直接联pȝ代码。其最有可能的效果是Dlg反应~慢。比如以下响应按钮事件的代码Q?/p>

String str = null;
this.textArea.setText("Please wait...");
try {
//do something that is really time consuming
str = "Hello, world!";
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.textArea.setText(str);    

执行之后的效果就是按钮似乎定住了一D|_直到Done.出现之后才弹h。原因就是Swinglg的更新和事g的响应都是在event-dispatching thread中完成的Q而事件响应的时候,event-dispatching thread被事件响应方法占据,所以组件不会被更新。而直C件响应方法退出时才有可能L新Swinglg?/p>

Z解决q个问题Q有Z怼试图通过调用repaint()Ҏ来更新组Ӟ

final String[] str = new String[1];
this.jTextArea1.setText("Please wait...");
this.repaint();

try {
Thread.sleep(1000L);
}catch(InterruptedException e) {
e.printStackTrace();
}
str[0] = "Done.";

jTextArea1.setText(str[0]);

但是q一个方法没有v到预期的作用Q按钮仍然定住一D|_在察看了repaint()Ҏ的源代码之后q道原因了?/p>

PaintEvent e = new PaintEvent(this, PaintEvent.UPDATE,
new Rectangle(x, y, width, height));
Toolkit.getEventQueue().postEvent(e);        

repaint()Ҏ实际上是在事仉列里加了一个UPDATE的事Ӟ而没有直接去重画lgQ而且q一个事件只能等待当前的事g响应Ҏl束之后才能被分配。因此只有绕q分配机制直接调用paintҎ才能辑ֈ目的?/p>

final String[] str = new String[1];
this.jTextArea1.setText("Please wait...");
this.paint(this.getGraphics());

try {
Thread.sleep(1000L);
}catch(InterruptedException e) {
e.printStackTrace();
}
str[0] = "Done.";

jTextArea1.setText(str[0]);

q样却是实现了更斎ͼ但是q存在着以下的问题。虽然从感觉上,按钮已经弹v来了Q但是在Done.出现之前Q我们却无法按下q个按钮。可以说按钮q是定住了,只不q定在了弹v的状态。调用重l方法无法从Ҏ上解决问题,因此我们需要寻求其他的Ҏ?/p>

使用多线E?/b>

有效的解x法是使用多线E。首先看一看一个更好的解决ҎQ这一Ҏ是在参考《Rethinking Swing Threading》[3]的一个程序片D完成的Q?/p>

final String[] str = new String[1];
this.jTextArea1.setText("Please wait...");
this.repaint();

new Thread() {
public void run() {
try {
Thread.sleep(1000L);
}catch(InterruptedException e) {
e.printStackTrace();
}
str[0] = "Done.";
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
jTextArea1.setText(str[0]);
}
});
}
}.start();

在这个程序中Q要p大量旉的操作被攑ֈ另一个线E当中,从而事g响应Ҏ能快速返回,event-dispatching thread可以更新UI和响应其它事件了。注意到q个E序使用了invokeLater()Ҏ。invokeLater()Ҏ的作用是让event-dispatching thread去运行制定的代码。当然也可以不用invokeLater()ҎQ但是这样就q背了单一U程原则Q同时带来了一定程度的相对多线E的不安全性。到现在Q解x案似乎是完美的了Q但是我们看一看在原来的程序添加下面的代码Q尽我们通常不这样做?/p>

public void paint(java.awt.Graphics g) {
super.paint(g);
g.drawRect(1, 1, 100, 100);
}

我们会发C前画的矩形被覆盖了一部分Q原因是׃我们没用重画q一个矩形,因此在结֊上对repaint()Ҏ的调用?/p>

final String[] str = new String[1];
this.jTextArea1.setText("Please wait...");
this.repaint();

new Thread() {
public void run() {
try {
Thread.sleep(1000L);
}catch(InterruptedException e) {
e.printStackTrace();
}
str[0] = "Done.";
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
jTextArea1.setText(str[0]);
repaint();
}
});
}
}.start();

如果你认D代码过于缺乏可L,通过在《Java Tutorial》[1]里面介绍的SwingWorker来简化编E的Ҏ。可以通过实现一个construct()Ҏ来实现花费大量时间的操作和重写finished()Ҏ来完成组件更新的工作?/p>

this.jTextArea1.setText("Please wait...");

final SwingWorker worker = new SwingWorker() {
public Object construct() {
try {
Thread.sleep(1000L);
}catch(InterruptedException e) {
e.printStackTrace();
}
return "Done.";
}
public void finished() {
jTextArea1.setText(getValue().toString());
repaint();
}
};
worker.start();

在《Rethinking Swing Threading》[3]Q作者将以上的编E方式称为同步方式。另外作者提Z一个通过消息机制来实现相同功能的更清晎ͼ但是需要编写更多代码的"异步"的方法?/p>

l论

MQ我们在~写使用Swinglg的程序是要记住以下几点:

1、不要过多地占用event-dispatching threadQ?/p>

2、与更新lg相关的代码要使用event-dispatching threadL行;

3、要更新lg?/p>

~写反应灉|的图形用L面还需要考虑很多问题Q以上只是最基本的一部分。欢q有兴趣的读者来信进行讨论?/p>

jht 2008-03-13 17:53 发表评论
]]>
[译]Java RMI指南http://www.aygfsteel.com/jht/archive/2007/05/09/116216.htmljhtjhtWed, 09 May 2007 08:59:00 GMThttp://www.aygfsteel.com/jht/archive/2007/05/09/116216.htmlhttp://www.aygfsteel.com/jht/comments/116216.htmlhttp://www.aygfsteel.com/jht/archive/2007/05/09/116216.html#Feedback0http://www.aygfsteel.com/jht/comments/commentRss/116216.htmlhttp://www.aygfsteel.com/jht/services/trackbacks/116216.html阅读全文

jht 2007-05-09 16:59 发表评论
]]>
使用WebService 和RMIq程协作http://www.aygfsteel.com/jht/archive/2007/03/31/107687.htmljhtjhtSat, 31 Mar 2007 13:27:00 GMThttp://www.aygfsteel.com/jht/archive/2007/03/31/107687.htmlhttp://www.aygfsteel.com/jht/comments/107687.htmlhttp://www.aygfsteel.com/jht/archive/2007/03/31/107687.html#Feedback0http://www.aygfsteel.com/jht/comments/commentRss/107687.htmlhttp://www.aygfsteel.com/jht/services/trackbacks/107687.html阅读全文

jht 2007-03-31 21:27 发表评论
]]>
MyScreenSnap 一个简单的截图E序http://www.aygfsteel.com/jht/archive/2007/03/29/107311.htmljhtjhtThu, 29 Mar 2007 11:19:00 GMThttp://www.aygfsteel.com/jht/archive/2007/03/29/107311.htmlhttp://www.aygfsteel.com/jht/comments/107311.htmlhttp://www.aygfsteel.com/jht/archive/2007/03/29/107311.html#Feedback3http://www.aygfsteel.com/jht/comments/commentRss/107311.htmlhttp://www.aygfsteel.com/jht/services/trackbacks/107311.html阅读全文

jht 2007-03-29 19:19 发表评论
]]>
SwingHack1-创徏使用囑փ主题的组?/title><link>http://www.aygfsteel.com/jht/archive/2007/03/28/107093.html</link><dc:creator>jht</dc:creator><author>jht</author><pubDate>Wed, 28 Mar 2007 15:57:00 GMT</pubDate><guid>http://www.aygfsteel.com/jht/archive/2007/03/28/107093.html</guid><wfw:comment>http://www.aygfsteel.com/jht/comments/107093.html</wfw:comment><comments>http://www.aygfsteel.com/jht/archive/2007/03/28/107093.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jht/comments/commentRss/107093.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jht/services/trackbacks/107093.html</trackback:ping><description><![CDATA[q个技巧比较Cool也比较基常用Q关键技术是使用囑փ重新l制lg<br />看下面demo的代?br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.awt.Insets;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> javax.swing.ImageIcon;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> javax.swing.JButton;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_124_448_Open_Image" onclick="this.style.display='none'; Codehighlighter1_124_448_Open_Text.style.display='none'; Codehighlighter1_124_448_Closed_Image.style.display='inline'; Codehighlighter1_124_448_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_124_448_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_124_448_Closed_Text.style.display='none'; Codehighlighter1_124_448_Open_Image.style.display='inline'; Codehighlighter1_124_448_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> ImageButton </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> JButton </span><span id="Codehighlighter1_124_448_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.aygfsteel.com/images/dot.gif" /></span><span id="Codehighlighter1_124_448_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000"> serialVersionUID </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">7760427126786950870L</span><span style="COLOR: #000000">;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_232_446_Open_Image" onclick="this.style.display='none'; Codehighlighter1_232_446_Open_Text.style.display='none'; Codehighlighter1_232_446_Closed_Image.style.display='inline'; Codehighlighter1_232_446_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_232_446_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_232_446_Closed_Text.style.display='none'; Codehighlighter1_232_446_Open_Image.style.display='inline'; Codehighlighter1_232_446_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> ImageButton(ImageIcon icon) </span><span id="Codehighlighter1_232_446_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.aygfsteel.com/images/dot.gif" /></span><span id="Codehighlighter1_232_446_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        setSize(icon.getImage().getWidth(</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">),icon.getImage().getHeight(</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">));<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        setIcon(icon);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        setMargin(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Insets(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">));<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        setIconTextGap(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        setBorderPainted(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        setBorder(</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        setText(</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span></div><p><br />E微要解释一下的是讲button的边框都讄成ؓ0Q还有边框的重绘讄falseQ我们可以用不同的脓图表C按钮被选中{的状?br /><br />使用q个lg的demoCode</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">        ImageButton button </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ImageButton(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">images/*.png</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        button.setPressedIcon(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ImageIcon(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">images/*.png</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        button.setRolloverIcon(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ImageIcon(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">images/*.png</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        button.setSelectedIcon(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ImageIcon(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">images/*.png</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        button.setRolloverSelectedIcon(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ImageIcon(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">images/*.png</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        button.setDisabledIcon(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ImageIcon(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">images/*.png</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        button.setDisabledSelectedIcon(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ImageIcon(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">images/*.png</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));</span></div><br />q个Hack要显C效果好Q关键就在于贴图了,可见工很重要?br /><br />我准备每天Hack一?br /><br />更多内容Q可以看Swing Hacks<br /><br /><br />参考资料:<br /> "<span id="wmqeeuq" class="docEmphasis">Swing Hacks</span> by Joshua Marinacci and Chris Adamson. Copyright 2005 O'Reilly Media, Inc., 0-596-00907-0."<img src ="http://www.aygfsteel.com/jht/aggbug/107093.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jht/" target="_blank">jht</a> 2007-03-28 23:57 <a href="http://www.aygfsteel.com/jht/archive/2007/03/28/107093.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tip: About a frame without title barhttp://www.aygfsteel.com/jht/archive/2007/03/28/106932.htmljhtjhtWed, 28 Mar 2007 05:24:00 GMThttp://www.aygfsteel.com/jht/archive/2007/03/28/106932.htmlhttp://www.aygfsteel.com/jht/comments/106932.htmlhttp://www.aygfsteel.com/jht/archive/2007/03/28/106932.html#Feedback0http://www.aygfsteel.com/jht/comments/commentRss/106932.htmlhttp://www.aygfsteel.com/jht/services/trackbacks/106932.html
JFrame frame = new JFrame();
frame.setUndecorated(
true);
frame.setSize(
500200);
frame.show();


jht 2007-03-28 13:24 发表评论
]]>
study.jni的简单尝?Java 调用 C++)http://www.aygfsteel.com/jht/archive/2007/01/16/94214.htmljhtjhtTue, 16 Jan 2007 07:33:00 GMThttp://www.aygfsteel.com/jht/archive/2007/01/16/94214.htmlhttp://www.aygfsteel.com/jht/comments/94214.htmlhttp://www.aygfsteel.com/jht/archive/2007/01/16/94214.html#Feedback0http://www.aygfsteel.com/jht/comments/commentRss/94214.htmlhttp://www.aygfsteel.com/jht/services/trackbacks/94214.htmlStep1Q创建带?/span>NativeҎ描述?/span>ProcessHandler.java文g

Step2Q?/span>javac ~译该文Ӟ生成ProcessHandler.class文g

Step3Q?/span>javah ProcessHandler.class 生成pkg_ProcessHandler.h NativeҎ头文Ӟ注意包名字ؓpkgQ所以生成的Ҏ?/span>pkg_开?/span>

Step4Q?/span>Eclipse建立Managed Make C++ ProjectQ在W二步选择Shared LibraryQ然后把刚刚生成和的pkg_ProcessHandler.h 加入工程

Step5Q实?/span>NativeҎQ从头文仉?/span>Copy个方法,完成具体实现Q编译工E,生成dll

Step6Q完成后Jni调用Q注?/span>dll库需要在pȝPath里,否则会出?/span>java.lang.UnsatisfiedLinkError: no *** in java.library.path

 

 

除了上面的\径问题,q有可能不能成功调用?/span> dll Q原因上 g++/gcc ~译出来的东西和 java 预期的不匚wQ详l描q参?/span> http://www.aygfsteel.com/lixf/archive/2005/12/23/25177.html ?/span> win32 下?/span> gcc ~译?/span> java 调用?/span> dll ȝ (jni) Q?/span> 我也是遇到问?/span> Google 到这文章的Q?/span> Solution 当然也在该文章里?/span>

 

参考资料:

例解 VC++ 6.0 实现 JNI Q非烂文Q?/span>



jht 2007-01-16 15:33 发表评论
]]>
支持通配W的多线E文件下?/title><link>http://www.aygfsteel.com/jht/archive/2006/12/31/91183.html</link><dc:creator>jht</dc:creator><author>jht</author><pubDate>Sun, 31 Dec 2006 07:58:00 GMT</pubDate><guid>http://www.aygfsteel.com/jht/archive/2006/12/31/91183.html</guid><wfw:comment>http://www.aygfsteel.com/jht/comments/91183.html</wfw:comment><comments>http://www.aygfsteel.com/jht/archive/2006/12/31/91183.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jht/comments/commentRss/91183.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jht/services/trackbacks/91183.html</trackback:ping><description><![CDATA[     摘要: 用各U网l下载工具下文g的时候,大多C载Y件支持添加批量下载Q务的功能Q闲暇之余coding了一个简单的E序Q实现批量下载.分了三个cRegFiles.java主要实现通配W文件地址的构?提供了一些辅助方?方便的添加需要下载的URLURLFileSaver.java 实现URL指向的文件保存到本地的功能FileDownLoader.java 创徏多个U程下蝲大家看code,Ƣ迎提出重构意见...  <a href='http://www.aygfsteel.com/jht/archive/2006/12/31/91183.html'>阅读全文</a><img src ="http://www.aygfsteel.com/jht/aggbug/91183.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jht/" target="_blank">jht</a> 2006-12-31 15:58 <a href="http://www.aygfsteel.com/jht/archive/2006/12/31/91183.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ʤ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank">߷</a>| <a href="http://" target="_blank">Ī</a>| <a href="http://" target="_blank">ԣ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">«ɽ</a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ﴨ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">±</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽȪ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɼ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ԫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ӽ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>