第一篇:Java AWT編程總結
1.什么是GUI?
a)GUI是Graphics User Interface的全稱,意思是圖形用戶界面.2.為什么需要GUI?
a)圖形用戶界面能夠讓最終用戶通過鼠標拖動、單擊等動作就可以操作整個應用,從而提高應用的用戶體驗效果,使程序受到用戶的歡迎.3.Java通過AWT和SWING來完成GUI圖形用戶界面編程.4.AWT
a)AWT是SUN公司提供的一個基本的GUI類庫,被稱為抽象工具集(Abstract
Window-Toolkit),它為Java應用程序提供了基本的組件.b)AWT組件需要調用運行平臺的圖形界面來創建和平臺一致的對等體,所以AWT只
能使用所有平臺都支持的公共組件,因此AWT只能夠提供一些 常用的GUI組件.5.AWT的主要組成部分
a)Component,代表一個具體圖形表示能力的對象,可以在屏幕上顯示,并與用戶交互.通常我們把它稱為”組件”.b)MenuComponent,代表圖形界面的菜單.i.MenuBar,代表菜單條.ii.Menu,代表一個菜單項的集合.iii.MenuItem,代表一個菜單項.c)Container,代表一個AWT組件容器,可以盛裝其他Commponent組件,它繼承自
Component抽象類,本身也代表一個Component組件.i.Window,可獨立存在的頂級窗口.1.Frame,代表一個窗體.2.Dialog,代表一個對話框
a)FileDialog代表一個文件對話框,用于打開或保存文件.Panel,可容納其他組件,但不能獨立存在,必須被添加到其他容器中.ii.iii.ScrollPane,帶滾動條的容器.d)LayoutManager,布局管理器,表示容器管理其他組件的方式.i.ii.iii.iv.v.vi.FlowLayout,流式布局,類似于Window平臺記事本的文本布局方式.BorderLayout,邊框布局,只能盛裝5個組件,這5個組件分別位于邊框布局容器的東西南北中五個方位.GridLayout,網格布局,將組件以網格形式顯示在容器中.GridBagLayout,網格包布局,一種較為復雜的布局管理器,依賴GridBagConstraints來約束組件.CardLayout,卡片布局,以時間來管理容器內的組件,將組件看作是一張張卡片,每次顯示最外面一張卡片(組件).BoxLayou,箱式布局,通常與Box容器結合使用.6.AWT 的事件
a)應用程序響應用戶的某個動作或請求,如用戶單擊了一下鼠標,用戶請求關閉應用
程序窗口等.b)AWT編程中,所有事件的處理都必須交給特定的對象來完成,我們將這個特定的對
象稱為事件監聽器.c)AWT的事件處理機制是一種委派式的事件處理方式,通過將某個事件監聽器注冊
到用戶指定的組件,當用戶進行某個操作并觸發指定事件時,應用程序會自動產生一個事件(Event)對象并作為參數傳給事件監聽器中的事件處理器,然后由事件監
聽器通知事件處理器來響應用戶,完成用戶的請求.d)不同的事件需要不同的事件監聽器,不同的監聽器需要實現不同的監聽器接口.e)事件監聽器接口:為某個特定事件定義了響應用戶請求的方法,當用戶將某個事件
監聽器注冊到指定組件上以響應特定的事件時,則該事件監聽器必須實現對應的事件監聽器接口才能對用戶的請求進行有效處理.例如,用戶點擊了鼠標右鍵,希望打開某個應用程序的右鍵菜單,則注冊到該應用程序上的事件監聽器必須實現鼠標事件監聽器接口,并實現該接口內部某些方法來完成用戶的請求.f)事件適配器,很多時候,我們只需要實現某個事件監聽器接口中個別方法就能完成應用程序的實際需求,但實現該事件監聽器接口的類必須實現該接口中所有的抽象方法,這會造成代碼的冗余.而事件適配器可以幫我們解決這個問題,事件適配器實現了所有的擁有多個抽象方法的事件監聽器接口,并空實現了這些接口中所有的抽象方法,所謂空實現,就是方法中沒有任何實現代碼,因此,我們可以通過繼承對應事件監聽器接口的事件適配器抽象類,并實現我們感興趣的方法來完成應用需求即可.g)Java事件處理過程中主要涉及的三類對象
i.事件源,通常為普通組件.ii.事件,通常指用戶的某個操作,如單擊了一下鼠標,按了一下回車鍵.iii.事件監聽器,負責監聽事件源上所發生的事件,并作出響應.h)AWT事件監聽器的實現形式
i.ii.內部類形式 頂級類形式
iii.類本身作為事件監聽器
iv.匿名內部類形式
v.注:目前最為流行的事件監聽器的實現形式是內部類形式和匿名內部類形式.7.AWT繪圖
a)AWT繪圖的實現過程.i.重寫畫布類的paint方法,繪圖圖形.ii.注冊事件監聽器到指定的組件.iii.調用Component類的repaint方法繪制圖形.b)AWT實現繪圖主要涉及的對象
i.ii.c)Component類的子類Canvas類,它代表一個畫布.Graphics,代表一個畫筆,可以在Canvas的子類中繪制用戶自訂的圖形.Image類代表了位圖,它的一個主要的實現類BufferedImage是可以訪問圖形數據
緩沖區,并可以返回一個Graphics對象來繪制該BuuferedImage.d)可以使用ImageIO工具類的ImageReader和ImageWriter讀寫磁盤上的位圖文件.8.AWT的優缺點
a)AWT在許多非桌面環境,如嵌入式設備中有著自己的優勢,它的主要優點如下:i.ii.iii.iv.更少的內存:對運行在有限環境中的GUI程序的開發,是合適的。2.更少的啟動事件:由于AWT組件是本地由操作系統實現的。絕大多數的二進制代碼已經在如系統啟動的時候被預裝載了,這降低了它的啟動事件。3.更好的響應:由于本地組件由操作系統渲染。4.成熟穩定的:能夠正常工作并很少使你的程序崩潰。
b)同樣它也有不少的缺點
i.ii.iii.更少組件類型:表和樹這些重要的組件缺失了。它們是桌面應用程序中普遍使用的。2.缺乏豐富的組件特征:按鈕不支持圖片。3.無擴展性:AWT的組件是本地組件。JVM中的AWT類實例實際只是包含本地
組件的引用。唯一的擴展點是AWT的Canvas組件,可以從零開始創建自定義組
件。然而無法繼承和重用一個已有的AWT組件
9.AWT總結:AWT是SUN不推薦使用的工具集,實際開發中很少使用AWT而是使用SUN公司
和Netscape公司共同開發的一個新的用戶界面庫-Swing來開發GUI應用程序,AWT是圖形用戶界面編程的基礎,它的布局管理、事件機制、剪貼板操作等內容仍然適用于Swing GUI編程.
第二篇:刀具和編程總結
① 白鋼刀(即高速鋼刀具)因其通體銀白色而得名,主要用于直壁加工。白鋼刀價格便宜,但切削壽命短、吃刀量小、進給速度低、加工效率低,在數控加工中較少使用。
② 飛刀(即鑲嵌式刀具)主要為機夾式可轉位刀具,這種刀具剛性好、切削速度高,在數控加工中應用非常廣泛,用于模胚的開粗、平面和曲面粗精加工效果均很好。
③ 合金刀(通常指的是整體式硬質合金刀具)精度高、切削速度高,但價格昂貴,一般用于精加工。
數控刀具與普通機床上所用的刀具相比,有以下不同的要求。
(1)剛性好(尤其是粗加工刀具)、精度高、抗振及熱變形小。
(2)互換性好,便于快速換刀。
(3)壽命高,切削性能穩定、可靠。
(4)刀具的尺寸便于調整,以減少換刀調整時間。
(5)刀具應能可靠地斷屑或卷屑,以利于切屑的排除。(6)系列化、標準化,以利于編程和刀具管理。
① 刀具直徑越大,轉速越慢;同一類型的刀具,刀桿越長,吃刀量就要減小,否則容易彈刀而產生過切。
② 白鋼刀轉速不可過快,進給速度不可過大。
③ 白鋼刀容易磨損,開粗時少用白鋼刀。
① 以上的飛刀參數只能作為參考,因為不同的飛刀材料其參數值也不相同,不同的刀具廠生產的飛刀其長度也略有不同。另外,刀具的參數值也因數控銑床或加工中心的性能和加工材料的不同而不同,所以刀具的參數一定要根據工廠的實際情況來設定。
② 飛刀的剛性好,吃刀量大,最適合模胚的開粗。另外,飛刀精加工陡峭面的質量也非常好。③ 飛刀主要是鑲刀粒的,沒有側刃,① 合金刀剛性好,不易產生彈刀,用于精加工模具的效果最好。
② 合金刀和白鋼刀一樣有側刃,精銑銅公直壁時往往使用其側刃。
① 刀具的名稱一般根據刀具的直徑和圓角半徑來定義,例如,直徑為30,圓角半徑為5的飛刀,其名稱定義為D30R5;直徑為12的平底刀,其名稱定義為D12;半徑為5的球刀,其名稱定義為R5。
② 輸入刀具名稱時,只需要輸入小寫字母即可,系統會自動將字母轉為大寫狀態。③ 設置刀具參數時,只需要設置刀具的直徑和底圓角半徑即可,其他參數按默認即可。加工時,編程人員還需要編寫加工工藝說明卡,注明刀具的類型和實際長度。
機床坐標一般在工件頂面的中心位置,所以創建機床坐標時,最好先設置好當前坐標,然后在〖CSYS〗對話框中設置“參考”為WCS。
加工模具時,其開粗余量多設為0.5,但如果是加工銅公余量就不一樣了,因為銅公(銅公是火花機放電加工用的電極)最后的結果是要留負余量的。
模具加工要求越高時,其對應的公差值就應該越小。
進行實體模擬驗證前,必須設置加工工件和毛坯,否則無法進行實體模擬。
第三篇:編程題總結
C作業匯總
1.short a,b=32767;/*short類型在內存中占2B*/ a=b+1;問:a的值是多少?并分析原因。
2.有一4位數整數,假設用abcd表示,請把這個4位數的每個數位用表達式表示出來。3.從鍵盤輸入圓的半徑r,計算并輸出圓的面積s(要求:半徑r定義為float型;圓周率?定義為符號常量;面積s保留2位小數)#define PI 3.14159 #include
4.輸入m>=3的正整數,判斷m是否素數。畫出算法流程圖及NS圖
5.有一函數:
x?1 ?x ?y??2x?1 1?x?10
?3x-11 x?10 ?寫一段程序,輸入x,輸出y值。
要求x,y聲明為float類型,y保留2位小數。#include
if(x<1)
y=x;else
if(x<10)
y=2*x-1;
else
y=3*x-11;
}
printf(“y=%.2fn”,y);
x3x5x7x9?????,6.課后習題4.17(P159)利用泰勒級數sinx?x?計算sinx的3!5!7!9!值。要求最后一項的絕對值小于10,并統計出此時累加了多少項。#include
/*記錄每個項數*/ int n=1,count=0;/*count記錄累加了多少項*/
printf(“請輸入x值(弧度):n”);scanf(“%f”,&x);
term=x/n;while(fabs(term)>1e-5)
/* while循環*/ {
sinx+=term;
count++;
n+=2;
term=-term*x*x/((n-1)*n);}
/* do
/*do while循環*/ {
sinx+=term;
count++;
n+=2;
term=-term*x*x/((n-1)*n);}while(fabs(term)>1e-5);
*/
printf(“sin(%.2f)=%.4fn”,x,sinx);printf(“一共累加了:%d項。n”,count);}
7.用牛頓迭代法求下面方程在1.5附近的根:
2x?4x?3x?6?0 32?5
牛頓迭代公式:
x1?x0?f(x0)f?(x0)
#include
/*y1記錄f(x0),y2記錄f(x0)的導數*/
do {
x0=x1;
y1=2*x0*x0*x0-4*x0*x0+3*x0-6;
y2=6*x0*x0-8*x0+3;
x1=x0-y1/y2;}while(fabs(x1-x0)>1e-5);
printf(“the root is:%.2fn”,x1);}
8.寫一函數,輸入一個16進制整數,輸出相應的10進制數。例:從鍵盤輸入2a,輸出結果是42。
要求:若輸入數據不合法,則輸出提示信息。如輸入了35g,輸出“您輸入的16進制數不合法!”。
#include
printf(“請輸入一個16進制數字:n”);
while((c=getchar())!='n'){
if(c>='0' && c<='9')
sum=sum*16+c-'0';
else
if(c>='a' && c<='f')
sum=sum*16+c-87;
else
if(c>='A' && c<='F')
sum=sum*16+c-55;
else
{
printf(“您輸入的16進制不合法.n”);
exit(0);
} }
printf(“相應的10進制數是:%dn”,sum);} 方法2:用字符串處理的方式 #include
printf(“請輸入一個16進制數字:n”);gets(str);
for(i=0;str[i];i++){
if(str[i]>='0' && str[i]<='9')
sum=sum*16+str[i]-'0';
else
if(str[i]>='a' && str[i]<='f')
sum=sum*16+str[i]-87;
else
if(str[i]>='A' && str[i]<='F')
sum=sum*16+str[i]-55;
else
{
printf(“您輸入的16進制不合法.n”);
exit(0);
} }
printf(“相應的10進制數是:%dn”,sum);} 方法3:用字符數組及指針處理的方式 #include
{ char str[20],*p=str;int sum=0;
printf(“請輸入一個16進制數字:n”);gets(p);
while(*p){
if(*p>='0' && *p<='9')
sum=sum*16+*p-'0';
else
if(*p>='a' && *p<='f')
sum=sum*16+*p-87;
else
if(*p>='A' && *p<='F')
sum=sum*16+*p-55;
else
{
printf(“您輸入的16進制不合法.n”);
exit(0);
}
p++;}
printf(“相應的10進制數是:%dn”,sum);} 9.編寫一個小函數,其功能是計算兩個整數的平均值,該函數要在主函數中調用。
#include
avg=average(x,y);
printf(“%d,%d的平均值是:%.2fn”,x,y,avg);}
float average(int x,int y)
{ return(x+y)/2.0;}
10.有N(N用宏定義為符號常量)個元素的一維整型數組,該數組中各元素值從鍵盤隨機輸入。然后,將這個整型數組中的值逆序存放。例如,原來5個元素的順序為8、1、4、6、5,逆序之后各元素的值是5、6、4、1、8 #define N 5 #include
printf(“輸入%d個整數,用空格或回車分隔:n”,N);for(i=0;i scanf(“%d”,&a[i]); printf(“數組原來的值是:n”);for(i=0;i printf(“%dt”,a[i]); for(i=0;i t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;} printf(“n逆序之后數組的值是:n”);for(i=0;i printf(“%dt”,a[i]); printf(“n”);} 11.有N(N用宏定義為符號常量)個元素的一維整型數組,該數組中各元素值從鍵盤隨機輸入。然后,對該數組元素進行由小到大排序(要求,該功能用函數實現),輸出數組中各元素值。最后,從鍵盤隨機輸入一個整數,并把該整數插入上述數組中(該功能用函數實現),使得插入該整數后的數組仍然有序,輸出數組中各元素的值。#define N 5 #include int i,x;void sort(int array[],int n);void insert(int array[],int n,int x); printf(“輸入%d個整數,用空格或回車分隔:n”,N);for(i=0;i scanf(“%d”,&a[i]); sort(a,N); /*調用sort對數組進行排序*/ printf(“n升序排序之后數組的值是:n”);for(i=0;i printf(“%d ”,a[i]); printf(“n輸入一個x值插入到數組中:n”);scanf(“%d”,&x); insert(a,N,x); printf(“n插入%d之后數組的值是:n”,x);for(i=0;i printf(“%d ”,a[i]); printf(“n”);} void sort(int array[],int n)/*用選擇法對數組array升序排序*/ { int i,j,t,min; for(i=0;i min=i; for(j=i+1;j if(array[j] min=j; if(min!=i) { t=array[i]; array[i]=array[min]; array[min]=t; } } } void insert(int array[],int n,int x){ int i,pos; for(i=0;i pos=i; for(i=n-1;i>=pos;i--) array[i+1]=array[i]; array[pos]=x;} 12.有一整型數組,N(N用宏定義為符號常量)個元素,該數組中各元素值從鍵盤隨機輸入。從鍵盤隨機輸入一個整數x,刪除該數組中值與x相同的所有元素(該功能用函數實現),輸出數組中各元素的值。#define N 5 #include printf(“輸入%d個整數,用空格或回車分隔:n”,N);for(i=0;i scanf(“%d”,&a[i]); printf(“數組原來的值是:n”);for(i=0;i printf(“%dt”,a[i]); printf(“n請輸入要刪除的值x:n”);scanf(“%d”,&x); n=delet(a,N,x); /*n值是刪除與x相同的元素后,數組剩余元素的個數。*/ printf(“刪除%d之后數組的值是:n”,x);for(i=0;i printf(“%d ”,a[i]); printf(“n”); } int delet(int a[],int n,int x){ int i,j; for(i=0,j=0;i if(a[i]!=x) a[j++]=a[i]; return j;} 13.從鍵盤隨機輸入一字符串,將所有ASCII值為偶數的字符輸出。例如:輸入abc123,輸出結果是b2(因為b的ASCII值是98,2的ASCII值是50,其他字符的ASCII值都是奇數) #include printf(“輸入字符串:n”);gets(str); printf(“ASCII碼是偶數的字符有:”);for(i=0;str[i];i++) if(str[i]%2==0)putchar(str[i]); printf(“n”);} 14.從鍵盤輸入兩個字符串s1,s2,把s2連接到s1的末尾。不能用strcat函數 #include printf(“輸入兩個字符串,輸入回車鍵結束:n”);gets(str1);gets(str2); mystrcat(str1,str2); printf(“連接在一起的字符串是:n”);puts(str1); } void mystrcat(char *p1,char *p2){ while(*p1)p1++;while(*p2) *p1++=*p2++;*p1='
主站蜘蛛池模板:
国产精品沙发午睡系列990531|
午夜人成免费视频|
7777欧美成是人在线观看|
精品午夜福利1000在线观看|
国产人澡人澡澡澡人碰视频|
成人无码一区二区三区网站|
99久久综合狠狠综合久久止|
免费网站看v片在线18禁无码|
18禁黄污吃奶免费看网站|
国产强伦姧在线观看无码|
亚洲精品久久久久久久久久吃药|
亚洲中文字幕无码不卡电影|
国产精品一久久香蕉国产线看观看|
国产精品熟妇视频国产偷人|
男女后式激烈动态图片|
欧美亚洲日韩国产人成在线播放|
久久综合精品国产一区二区三区无码|
亚洲精品伦理熟女国产一区二区|
无码午夜人妻一区二区不卡视频|
青青青爽视频在线观看|
国产免费观看黄av片|
中文字幕v亚洲日本|
新妺妺窝人体色7777太粗|
国产午夜福利小视频合集|
日本卡2卡3卡4卡5卡精品视频|
久久亚洲2019中文字幕|
激情第一区仑乱|
蜜桃臀无码内射一区二区三区|
中文字幕乱码无码人妻系列蜜桃|
久久超碰97人人做人人爱|
国内精品久久久久久久小说|
亚洲成av人片在线观看橙子|
丰满人妻被公侵犯完整版|
区二区欧美性插b在线视频网站|
国产成人人综合亚洲欧美丁香花|
国产午夜免费啪视频观看视频|
亚洲精品国产a久久久久久|
不卡一区二区视频日本|
久久中文字幕亚洲精品最新|
国产人妖乱国产精品人妖|
亚洲日韩一区二区一无码|