Java里調(diào)用的還真不多,首先你的libtensorflow要導(dǎo)進(jìn)去(我不用發(fā)布,所以我只在IDE里導(dǎo)入了),然后,將tensorflow_jni.dll放到你的項(xiàng)目中,必須是你要執(zhí)行類的那個(gè)項(xiàng)目
平谷網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),平谷網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為平谷近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個(gè)售后服務(wù)好的平谷做網(wǎng)站的公司定做!
import?java.awt.Canvas;
import?java.awt.Color;
import?java.awt.Dimension;
import?java.awt.EventQueue;
import?java.awt.Frame;
import?java.awt.Graphics;
import?java.awt.Graphics2D;
import?java.awt.Image;
import?java.awt.RenderingHints;
import?java.awt.event.KeyEvent;
import?java.awt.event.KeyListener;
import?java.awt.event.WindowAdapter;
import?java.awt.event.WindowEvent;
import?java.awt.image.BufferedImage;
import?java.io.File;
import?java.io.IOException;
import?javax.imageio.ImageIO;
public?class?TestImage?extends?Frame
{
private?static?final?long?serialVersionUID?=?1L;
private?static?boolean?PRESSED?=?false;
private?static?int?pointX?=?0;
private?static?int?pointy?=?200;
private?static?int?RIGHT_GO?=?0;
private?static?int?LEFT_GO?=?0;
private?static?int?DIR?=?0;
private?static?int?ANGLE?=?0;
private?static?int?W?=?50;
private?static?int?H?=?60;
private?_Canvas?canvas?=?null;
public?TestImage?()
{
add?(canvas?=?new?_Canvas?());
setIgnoreRepaint?(true);
requestFocus?();
}
public?class?_Canvas?extends?Canvas?implements?Runnable
{
private?static?final?long?serialVersionUID?=?1L;
private?BufferedImage?bi?=?null;
private?Image?bufferedImage?=?null;
private?Thread?thread?=?null;
private?long?sleepTime?=?10;
public?_Canvas?()
{
try
{
bi?=?ImageIO.read?(new?File?("go.png"));
}
catch?(IOException?e)
{}
setBackground?(Color.BLACK);
requestFocus?();
addKeyListener?(new?KeyListener?()
{
@Override
public?void?keyTyped?(?KeyEvent?e?)
{}
@Override
public?void?keyReleased?(?KeyEvent?e?)
{
RIGHT_GO?=?0;
PRESSED?=?false;
}
@Override
public?void?keyPressed?(?KeyEvent?e?)
{
//?38?40?37?39上下左右
DIR?=?e.getKeyCode?();
PRESSED?=?true;
}
});
}
@Override
public?void?paint?(?Graphics?g?)
{
Graphics2D?g2d?=?(Graphics2D)?g;
g2d.setRenderingHint?(RenderingHints.KEY_INTERPOLATION,?RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.drawImage?(rotateImage?(bi.getSubimage?(RIGHT_GO,?LEFT_GO,?W,?H),?ANGLE,?true),?pointX,?pointy,?W,?H,
this);
g2d.dispose?();
}
@Override
public?void?update?(?Graphics?g?)
{
if?(null?==?bufferedImage)
{
bufferedImage?=?createImage?(getWidth?(),?getHeight?());
}
Graphics?bufferedG?=?bufferedImage.getGraphics?();
bufferedG.clearRect?(0,?0,?getWidth?(),?getHeight?());
paint?(bufferedG);
bufferedG.dispose?();
g.drawImage?(bufferedImage,?0,?0,?this);
g.dispose?();
}
public?void?start?()
{
thread?=?new?Thread?(this);
thread.setName?("TestImage");
thread.setPriority?(Thread.MIN_PRIORITY);
thread.start?();
}
public?synchronized?void?stop?()
{
thread?=?null;
notify?();
}
@Override
public?void?run?()
{
Thread?me?=?Thread.currentThread?();
while?(thread?==?me??!isShowing?()?||?getSize?().width?==?0)
{
try
{
Thread.sleep?(555);
}
catch?(InterruptedException?e)
{
return;
}
}
while?(thread?==?me??isShowing?())
{
if?(PRESSED)
{
try
{
if?(DIR?==?39)
{
RIGHT_GO?=?RIGHT_GO?+?50;
LEFT_GO?=?0;
pointX?=?pointX?+?1;
if?(pointX??420)
{
ANGLE?=?90;
pointX--;
pointy--;
W?=?60;
H?=?50;
}
if?(RIGHT_GO??50)
{
RIGHT_GO?=?0;
}
}
else?if?(DIR?==?37)
{
pointX?=?pointX?-?1;
RIGHT_GO?=?RIGHT_GO?+?50;
LEFT_GO?=?60;
if?(pointX??0)
{
ANGLE?=?-90;
pointX++;
pointy--;
W?=?60;
H?=?50;
}
if?(RIGHT_GO??50)
{
RIGHT_GO?=?0;
}
}
else?if?(DIR?==?38)
{
W?=?50;
H?=?60;
pointy?=?150;
ANGLE?=?0;
RIGHT_GO?=?100;
}
else?if?(DIR?==?40)
{
W?=?50;
H?=?60;
ANGLE?=?0;
pointy?=?200;
RIGHT_GO?=?0;
}
Thread.sleep?(sleepTime);
repaint?();
}
catch?(InterruptedException?e)
{
break;
}
}
else
{
RIGHT_GO?=?RIGHT_GO?+?50;
LEFT_GO?=?0;
pointX?=?pointX?+?1;
if?(RIGHT_GO??50)
{
RIGHT_GO?=?0;
}
if?(pointX??500)
{
pointX?=?0;
}
try
{
Thread.sleep?(sleepTime);
repaint?();
}
catch?(InterruptedException?e)
{
break;
}
}
}
thread?=?null;
}
}
/**
?*?旋轉(zhuǎn)圖像為指定角度
?*?
?*?@param?degree
?*?@return
?*/
public?static?BufferedImage?rotateImage?(?final?BufferedImage?image,?final?int?angdeg,?final?boolean?d?)
{
int?w?=?image.getWidth?();
int?h?=?image.getHeight?();
int?type?=?image.getColorModel?().getTransparency?();
BufferedImage?img;
Graphics2D?graphics2d;
(?graphics2d?=?(?img?=?new?BufferedImage?(w,?h,?type)?).createGraphics?()?).setRenderingHint?(
RenderingHints.KEY_INTERPOLATION,?RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2d.rotate?(d???-Math.toRadians?(angdeg)?:?Math.toRadians?(angdeg),?w?/?2,?h?/?2);
graphics2d.drawImage?(image,?0,?0,?null);
graphics2d.dispose?();
return?img;
}
public?static?void?main?(?String[]?args?)
{
EventQueue.invokeLater?(new?Runnable?()
{
@Override
public?void?run?()
{
final?TestImage?ti?=?new?TestImage?();
ti.setSize?(new?Dimension?(500,?300));
ti.setLocationRelativeTo?(null);
ti.addWindowListener?(new?WindowAdapter?()
{
@Override
public?void?windowClosing?(?WindowEvent?e?)
{
System.exit?(0);
}
@Override
public?void?windowDeiconified?(?WindowEvent?e?)
{
ti.canvas.start?();
}
@Override
public?void?windowIconified?(?WindowEvent?e?)
{
ti.canvas.stop?();
}
});
ti.setResizable?(false);
ti.canvas.start?();
ti.setVisible?(true);
}
});
}
}
就是代碼和數(shù)據(jù)啊
用程序控制線程 程序就是代碼
重點(diǎn)放在CPU上是 因?yàn)?CPU執(zhí)行線程 與堆內(nèi)存密切 線程等待和異步同步執(zhí)行都是需要掌握的 加上線程鎖的問題 CPU處理機(jī)制就難以理解了
什么是委托事件模型
在教材上的圖中,我們可以發(fā)現(xiàn),用戶通過鍵盤、鼠標(biāo)等進(jìn)行操縱的行為,最終都傳遞給了JVM,那么JVM在接收到這些事件以后該如何處理呢?我們把這種處理事件的方案,稱之為事件模型。
Java中采用的是委托事件模型:jdk1.1以后,引入的一種新的事件代理模塊,通過它,事件源發(fā)出的事件被委托給(注冊了的)事件監(jiān)聽器(Listener),并由它負(fù)責(zé)執(zhí)行相應(yīng)的響應(yīng)方法。比如:病人生病請醫(yī)生。
基于這種模型,我們使用兩種類型的對象來執(zhí)行事件機(jī)制,這兩種對象是:
事件源對象
事件的偵聽對象
委托事件模型的實(shí)現(xiàn)步驟
在java語言中委托事件模型的處理步驟如下:
1.建立事件源對象。如各種GUI的組件。
2.為事件源對象選擇合適的事件監(jiān)聽器。比如事件源對象如果是“按鈕”,那么我們能想到的發(fā)生在按鈕身上最多的,應(yīng)該是單擊事件了。這時(shí)我就應(yīng)該選擇鼠標(biāo)單擊事件的監(jiān)聽器。
3.為監(jiān)聽器添加適當(dāng)?shù)奶幚沓绦?。比如?dāng)按鈕單擊事件發(fā)生后,希望完成的代碼。
4.為監(jiān)聽器與事件源建立聯(lián)系。
窗體自身實(shí)現(xiàn)事件監(jiān)聽
我們在剛才的例子中使用了兩個(gè)對象,一個(gè)是事件源對象,即JFrame窗體,另外還創(chuàng)建了一個(gè)監(jiān)聽器對象。事實(shí)上在實(shí)際開發(fā)過程中,我們往往,將這兩個(gè)類寫在一起,就是說一個(gè)窗體類自己監(jiān)聽自己的事件
其他事件監(jiān)聽器接口的使用
Java支持的事件監(jiān)聽器接口非常多,常見的主要有:
ActionListener 行為監(jiān)聽接口
AdjustmentListener 調(diào)整監(jiān)聽接口
ItemListener 選項(xiàng)監(jiān)聽接口
TextListener 文本監(jiān)聽接口
ComponentListener 組件監(jiān)聽接口
KeyListener 鍵盤監(jiān)聽接口
MouseListener 鼠標(biāo)點(diǎn)擊監(jiān)聽接口
MouseMotionListener 鼠標(biāo)移動(dòng)監(jiān)聽接口
FocusListener 光標(biāo)聚焦監(jiān)聽接口
WindowListener 窗體監(jiān)聽接口
ContainerListener 容器監(jiān)聽接口
KeyListener接口與KeyAdapter類
KeyListener接口:監(jiān)聽鍵盤事件。
該接口中定義了如下三個(gè)方法:
keyPressed() 鍵盤按下時(shí)觸發(fā)
keyReleased() 鍵盤釋放時(shí)觸發(fā)
keyTyped() 鍵盤單擊一次時(shí)觸發(fā)
KeyAdpeter適配器:即使我們只想使用上述三個(gè)方法中的一種,那么我們也必須在KeyListener接口的實(shí)現(xiàn)類中對這三種方法進(jìn)行重寫,這種方式顯然增加了很多無效代碼,我們可以使用適配器模式解決。
匿名內(nèi)部類
WindowListener接口與WindowAdapter類
WindowListener接口:監(jiān)聽窗體的行為。
windowListener接口常用方法:
windowActivated(WindowEvent e) 將 Window 設(shè)置為活動(dòng) Window 時(shí) 調(diào)用。
windowClosed(WindowEvent e) 因?qū)Υ翱谡{(diào)用 dispose 而將其關(guān)閉 時(shí)調(diào)用。
windowClosing(WindowEvent e) 用戶試圖從窗口的系統(tǒng)菜單中關(guān)閉窗 口時(shí)調(diào)用。
windowDeactivated(WindowEvent e) 當(dāng) Window 不再是活動(dòng) Window 時(shí)調(diào)用。
windowDeiconified(WindowEvent e) 窗口從最小化狀態(tài)變?yōu)檎? 態(tài)時(shí)調(diào)用。
windowIconified(WindowEvent e) 窗口從正常狀態(tài)變?yōu)樽钚』癄顟B(tài) 時(shí)調(diào)用。
windowOpened(WindowEvent e) 窗口首次變?yōu)榭梢姇r(shí)調(diào)用。
MouseListener接口與MouseAdapter類
MouseListener接口:監(jiān)聽鼠標(biāo)點(diǎn)擊的行為。
MouseListener接口常用方法:
mouseClicked(MouseEvent e) 鼠標(biāo)按鍵在組件上單擊(按下并釋放)時(shí)調(diào)用。
mouseEntered(MouseEvent e) 鼠標(biāo)進(jìn)入到組件上時(shí)調(diào)用。
mouseExited(MouseEvent e) 鼠標(biāo)離開組件時(shí)調(diào)用。
mousePressed(MouseEvent e) 鼠標(biāo)按鍵在組件上按下時(shí)調(diào)用。
mouseReleased(MouseEvent e) 鼠標(biāo)按鈕在組件上釋放時(shí)調(diào)用。
MouseMotionListener接口與MouseMotionAdapter類
MouseMotionListener接口:監(jiān)聽鼠標(biāo)移動(dòng)的行為。
MouseMotionListener接口常用方法:
mouseDragged(MouseEvent e) 鼠標(biāo)按鍵在組件上按下并拖動(dòng)時(shí)調(diào)用。
mouseMoved(MouseEvent e) 鼠標(biāo)按鍵在組件上移動(dòng)(無按鍵按下)時(shí)調(diào)用
標(biāo)題名稱:模型動(dòng)作java代碼 java模型訓(xùn)練
本文路徑:http://sd-ha.com/article28/dojsscp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、、網(wǎng)站收錄、靜態(tài)網(wǎng)站、網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)