Ring ring
logo

Chatbox|Admin nhận làm wap/web, giá cả thương lượng... Thông tin admin tại mỗi bài viết.
Home · Bang hội ·
* Đăng Nhập hoặc Đăng Kí
để sử dụng hết chức năng của diễn đàn.
Hi, Khách!
HomeBang hội » Thủ thuật » Nokia s40 » Lập trình j2me trên mobile by m4v
Xuống dưới » Lập trình j2me trên mobile by m4v
avatar by Pham_loi Pham_loi
Chức vụ:
11:59:19, 17-08-2015

(Bài 18) Làm quen với GameCanvas
Chào các bạn!
Sau đây tôi sẽ đưa ra vài tài liệu của anh Huỳnh Thanh Liêm và sưu tầm thêm giúp các bạn làm quen với lập trình game java.Chúng ta sẽ tạo ra những class mới từ các class sẵn có trong máy ảo java (thiết bị di động)
- Có hai class mà các bạn cần biết rõ đó là midlet và gamecanvas (vì ở đây ta lập trình game).Midlet là nền tảng của mọi tập tin java, ta ví nó như một bức tường và treo lên đó những thứ để ngắm ngía và vẽ vời. Gamecanvas thì như một tờ giấy hoặc một xấp giấy mà ta thực hiện công việc vẽ vời trên đó rồi sau đó thì treo lên tường để ngắm nhìn.
• Một class mới được tạo thành như sau:
import [các class có sẵn để sử dụng trong class mới
public class [tên class mới extends [kiểu class implements [kiểu thực thi {
//gán biến ở đây
public [tên class mới(){
//lệnh ở đây
}
//các chức năng hoặc lệnh ở đây
}

Copy code

• Một midlet thì có cấu trúc cơ bản thế này:
public class [tên class extends MIDlet {
public [ten class(){}
public void startApp(){}
public void pauseApp(){}
public void destroyApp(boolean unconditional){
notifyDestroyed();
//luôn như vậy
}
}

Copy code

• Một gameCanvas có cấu trúc như sau:
public class [tên class extends GameCanvas implement Runnalbe {
public [tên class(){
super(false);
//luôn như vậy
}
void start()
Thread t=new Thread(this);
t.start();
//tạo và khởi chạy một tiến trình, sẽ bắt đầu từ function run
}
public void run(){}
}

Copy code

Tại sao ta gọi nó là đồ họa cấp thấp?
là bởi vì canvas không cung cấp các item có sẵn như form mà hầu hết ta phải tự làm mọi việc bằng tay. Tuy nhiên form lại không hỗ trợ việc xử lý đồ họa như canvas. vì vậy hầu hết các game đều được xây dựng bằng giao diện đồ họa cấp thấp.
thế đấy, bài sau sẽ hướng dẫn cách vẽ lên một canvas và cách để gọi một class gamecanvas từ một midlet hay nói nôm na là treo bức tranh lên tường

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
11:58:50, 17-08-2015

(Bài 17) toán tử trong j2me lớp Math
1. Toán tử số học, giống như các phép tính mà chúng ta đã học, J2ME cũng như tất cả các ngôn ngữ lập trình khác đều cung cấp các phép toán này:
(cộng, 1 1 = 2)
- (trừ, 1-1 = 0)
* (nhân, 2*1 = 2)
/ (chia, 2/2 = 1)
% (chia lấy phần dư, 3%2 = 1)
2. Toán tử so sánh, sử dụng để thực hiện các phép toán so sánh giữa hai số hạng, kết quả trả về là kiêu boolean (đúng, sai):
== (bằng)
!= (không bằng)
> (lớn hơn)
>= (lớn hơn hoặc bằng)
< (nhỏ hơn)
<= (nhỏ hơn hoặc bằng)
3. Toán tử logic, cái này hơi bị nhức đầu, sử dụng để tổ hợp các boolean hoặc thựchiện phép tính số học dạng binary (bitwise):
|| (hoặc, một trong hai đúng thì đúng, ngược lại thì sai.
true||false=true, true||true=true false||false=false)
&& (và, hai cái đúng thì đúng, ngược lại thì sai.
true&&true=true, false&&true=false, false&&false=false)
| (OR, một toán tử bitwise, một trong haibit bằng 1 thì bằng một, ngược lại thì bằng 0)
& (AND, bitwise, cả hai cái bằng 1 thì bằng 1, ngược lại thì bằng 0)
^ (XOR, bitwise, 1 và 0 thì bằng 1 ngược lại thì bằng 0)
~ (NOT, bitwise, 0 thì thành 1, 1 thì 0)
Ví du bitwise:
số 4 chuyển sang binary: 00000100
số 2 chuyển sang binary: 00000010
4|2 =00000100 |00000010 =00000110
4&2 =00000100 &00000010 =00000000
4^2 =00000100 ^00000010 =00000110
~4 =~ 00000100= 11111011
4. Toán tử kết hợp, chúng ta thường nhận thấy cần phải tăng hoặc giảm lượng biến một số nguyên nào đó. Bạn sẽ thường thực hiện điều này khi chúng ta đếm 1 giá trị nào đó trong vòng lặp.Mình sẽ lấy một biến làm ví dụ: a=10;
(a tương tự a=a 1, a => a=11)
= (a =4 tương tự a=a 4, a =4 => a=14)
-- (a-- tương tụ a=a-1, a-- => a=9)
-= (a-=4 tương tự a=a-4, a-=4 =>a=6)
tương tự với các phép tính:/=, *=, %=, |=, &=, ^=5.
Lớp Math. thuộc package java.lang nên không cần import, lớp này cung cấp một số hàm tính toàn mà không thực được bằng các toán tử và một số hằng số.Các hằng số cung cấp:
Math.PI : (số Pi, dạng double)
Math.E Các hàm cung câp:
Math.abs : Giá trị trung bình cộng
(Math.abs(-1) = 1)
Math.ceil : Làm tròn số
(Math.abs(1.25)= 2)
Math.floor : Làm tròn số
(math.abs(1.25)= 1)
Math.sqrt : Tính trung bính công
(Math.sqrt(4) = 2)
Math.min : Lấy số nhỏ hơn trong 2 số
(Math.min(1,2) = 1)
Math.max : Lấy số lớn hơn trong 2 số
(Math.max(1,2) = 2)
Các hàm tính lượng giác:Math.cos, Math.sin, Math.tan
Lưu ý:
Bài này khá khó nên ae cần đọc kĩ mới hiểu được. hết bài này ta sẽ sang một giao diện mới đó là giao diện đồ họa cấp thấp. nó khó hơn cấp cao nhiều nên ae cần đọc kĩ bài giảng và thực hành nhiều lần.

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
11:57:55, 17-08-2015

(Bài 16) DateField-ngày giờ hiện tại
Thành phần DateField cung cấp một phương tiện trực quan để thao tác đối tượng Date được định nghĩa trongjava.util.Date. Khi tạo một đối tượng DateField, bạn cần chỉ rõ là người dùng chỉ có thể chỉnh sửa ngày, chỉnh sửa giờ hay đồng thời cả hai.
Các phương thức dựng của lớp DateField gồm:
DateField(String label, int mode)
Copy code

Trong đó:
label: tiêu đề
DateFieldmode: gồm:
DateField.DATE_TIME: cho phép thay đổi ngày giờ
DateField.TIME: chỉ cho phép thay đổi giờ
DateField.DATE: chỉ cho phép thay đổi ngày
DateField(String label, int mode, TimeZone timeZone)
Copy code

Ở đây mình chỉ đề cập đến hàm khởi tạo đầu tiên.
Các hàm với DateField
Date getDate()
Copy code

Lấy giá trị Date hiện tại
void setDate(Date date)
Copy code

Đặt giá trị Date hiện tại.
Ứng dụng sau minh họa sử dụng DateField:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*; 
public class Midlet extends MIDlet{
// Khai bao bien 
Form f;
Display d;
DateField date, time, date_time;
public Midlet(){
// Khoi tao cac bien
d = Display.getDisplay(this);  
f =new Form("DateField");  
date =new DateField("Date", DateField.DATE); 
time =new DateField("Time", DateField.TIME);  
date_time =new DateField("Date Time",DateField.DATE_TIME);  f.append(date);
f.append(time);  
f.append(date_time);
}
}
public void startApp(){
// hien thi form  
d.setCurrent(f);
}
public void pauseApp(){}
public void destroyApp(boolean unconditional){}
}

Copy code

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
11:57:08, 17-08-2015

(Bài 15) ChoiceGroup. tương tự list trên form
Thấy bang ta vắng quá nên đăng bài mới cho đỡ buồn :D
ChoiceGroup:Cũng tương tự như một list, nhưng thay vì là một lớp hiển thị riêng thì choicegroup là một loại item được gán lên form cùng với TextField, ImageItem, String Item...
cũng như list, ChoiceGroup cũng có những tính chất và cách thức tương tự.
ChoiceGroup cg=new ChoiceGroup("tên","kiểu");
Copy code

trong đó kiểu gồm có:
Choice.MULTIPLE
Choice.EXCLUSIVE
Choice.IMPLICIT
Choice.POPUP
kiểu popup giống như việc tạo ra một combo box
và để thêm vào những danh sách lựa chọn cũng tương tự như list:
cg.append("tên lựa chọn","ảnh đại diện");
Copy code

tất nhiên vì là một item nên choicegroup cần có một cái giá để treo lên và đó là Form, ta tạo một form và gán choicegroup vào bằng lệnh append như những item khác:
f.append(cg);
Copy code

sau đó thì cho hiển thị form là hiển thị choicegroup:
Display.getDisplay(this).setCurrent(f);
Copy code

MỘT SỐ THAO TÁC VỚI ChoiceGroup:
cg.set (vị trí lựa chọn, tên mới, ảnh mới);

cg.isSelected(vị trí lựa chọn);//trả về giá trị đúng sai
cg.setSelectedIndex(vị trí cần chọn); //lệnh để chọn một lựa chọn nào đó
cg,size();//không có tham số, trả về số các lựa chọn trong choicegroup

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
04:22:34, 11-08-2015

(bài 14) Phép chuyển kiểu trong J2ME
Như tôi đã nói ở phần trước, mỗi biến trong java đều có một kiểu dữ liệu nhất định nhưng khi ta có một biến đang ở một kiểu dữ liệu này mà ta lại muốn sử dụng nó với một kiểu dữ liệu khác như trong phép tính giữa các toán hạng không cùng kiểu. Ta phải làm sao? để trả lời cho câu hỏi này java đã hỗ trợ việc chuyển kiểu như sau:
Đây là một số phương pháp chuyển các giá trị số qua nhau, ta sẽ thêm"(kiểu chuyển)"vào trước giá trị cần chuyển.
Ví dụ: chuyển từ double sang int ta làm như sau.
double d = 3.14;
int i = (int)d;

thế là chuyển từ double sang integer, với các kiểu khác ta làm tương tự.
Còn chuyển từ dạng string sang số và ngược lại ta làm như sau.
Ví dụ: chuyển string sang int ta làm như sau.
String s = "8";
int a = Integer.parseInt(s);

Tương tự với Long, Double ta làm như sau.
LONG:
String s = "8";
long a = Long.parseLong(s);

DOUBLE:
String s = "3.14";
double a = Double.parseDouble(s);

.....
Còn muốn chuyển từ các dạng số về dạng string ta làm như sau.
INT:
int a = 8;
String s = String.valueOf(a);

DOUBLE:
double a = 3.14;
String s = String.valueOf(a);

Phép chuyển kiểu giúp ta lấy các số mà ta nhập vào từ TextField để tính toán như này:
int a = Integer.paserInt(tf.getString());
hàm tf.getString() để lấy giá trị của TextField tf chuyển vào biến số nguyên a..

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
04:21:47, 11-08-2015

(bài 13) String chuỗi trong J2ME
String là kiểu chuỗi trong j2me, có nhiều cách để tạo một String như sau:
String str=new String("chuỗi cần gán");
Copy code

String str="chuỗi cần gán";
Copy code

String str=new String(bytearray);
Copy code

String str=new String(chararray);
Copy code

String str=StringBuffer.toString();
Copy code

trong đó StringBuffer phải được tạo trước
* một số thao tác:
String str = 2   " là số hai";
Copy code

Nối số với chuỗi, kết quả: "2 là số hai"
String str = "hai"   " là số hai";
Copy code

Nối chuỗi với chuỗi, kết quả: "hai là số hai", cách làm khác:
String str = "hai";
str.concat(" là số hai");

Copy code

Ta được kết quả như nhau.
str.charAt(vị trí cần lấy kí tự);
Copy code

lấy kí tự ở vị trí nào đó của string
str.substring(vị trí bắt đầu, vị trí kết thúc);
Copy code

lấy chuỗi từ vị trí đến vị trí
str.compareTo(chuỗi so sánh);
Copy code

nếu giống thì trả về 0, nếu khác thì trả về số nhỏ hoặc lớn hơn 0 tùy vào chuỗi cần so sánh dài hay ngắn hơn.
str.endsWith(chuỗi so sánh);
Copy code

trả về đúng sai(boolean) xem chuỗi cần so sánh có kết thúc với chuỗi so sánh hay không
str.equals(chuỗi so sánh);
Copy code

xem hai chuỗi có giống nhau không, trả về boolean
str.getBytes();
Copy code

chuyển thành ByteArray
str.getChars(vị trí bắt đầu, vị trí cuối, mảng char, vị trí bắt đầu copy của mảng char);
Copy code

Copy mảng char của String vào mảng char, với vị trí bắt đầu, vị trí cuối của String và vị trí bắt đầu copy của mảng char
str.indexOf(giá trị của char, vị trí bắt đầu);
Copy code

vị trí của kí tự cần tìm xuất hiện đầu tiên trong chuỗi
str.lastindexOf(giá trị của char, vị trí bắt đầu);
Copy code

vị trí của kí tự cần tìm xuất hiện ở cuối cùng
str.length();
Copy code

độ dài của string
str.startsWith(chuỗi so sánh);
Copy code

trả về giá trị đúng sai xem chuỗi có kết thúc với chuỗi cần biết không
str.tocharArray();
Copy code

chuyển thành chararray
String là văn bản nên khi ta dùng sẽ gắn nó lên chỗ dùng văn bản
Ví dụ:
String a = "chán bang ta rồi";
f.append(a);
tf.setString(a);

Copy code


Nguồn: Holyeyed (có bổ sung bởi TVC97)

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
04:21:05, 11-08-2015

(bài 12) Vòng lặp (Bài quan trọng)
Phần này mình không rõ lắm, nhưng vòng lặp rất quan trọng nên phải viết một tý để bạn dùng tạm.
• Vòng lặp FOR:
Vòng lặp for có cấu trúc:
for(biến đếm (1); điều kiện lặp (2); xử lý biến (3)){
dãy lệnh (4);
}

Copy code

Thứ tự thực hiện là 1-2-4-3, tạo biến, kiểm tra điều kiện, thực hiện các lệnh rồi xử lý biến
* Ví dụ 1:
for(int i=0; i<10; i++)
{s = s + 1;}

Copy code

vòng lặp chạy 10 lần
Ví dụ 2:
for(int i=0; i<10; i +=2){ s = s + 1;}
Copy code

lặp 5 lần
Ví dụ 3:
for(int i=10; i<0; i++){ s = s + 1;}
Copy code

không lặp
for(int j=10; j>0; j++){ s = s + 1;}
Copy code

lặp vô hạn.
Đây là code mẫu lặp lại 5 lần và viết ra 5 chữ "NDT đập troai" :gy:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HelloWorld extends MIDlet{
Form f = new Form("tên form");
public void startApp(){
for(int i=0; i<5; i++)
{
f.append("NDT đập troai");
}
Display.getDisplay(this).setCurrent(f);
}
public void pauseApp(){}
public void destroyApp(boolean unconditional){ }
}

Copy code


• Vòng lặp WHILE:
Cấu trúc:
while(điều kiện){dãy lệnh;}
Copy code

Đây là vòng lặp không biết trước số lần lặp.
Ví dụ 5:
while(a<=0){
si.setString("nhap a>0");
form.append(si);
}

Copy code

Ví dụ 6:
while(dai==rong)
{s="hinh vuong";}

Copy code

Đây là code ví dụ nó sẽ lặp lại 5 lần và viết ra 5 chữ "NDT rất đập troai" :haha:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HelloWorld extends MIDlet{
Form f = new Form("tên form");
public void startApp(){
int i=0;
while(i<5)
{
f.append("NDT rất đập troai");
i++;
}
Display.getDisplay(this).setCurrent(f);
}
public void pauseApp(){}
public void destroyApp(boolean unconditional){ }
}

Copy code


• Vòng lặp DO - WHILE:
Vòng lặp không biết trước số lần lặp, số lần lặp ≥1. Giống repeat...until thì phải.
Cấu trúc:
do{dãy lệnh}
while(điều kiện);

Copy code

Cái này thực hiện lệnh rồi mới kiểm tra điều kiện.
Ví dụ 7:
do{a }
while(a<100);

Copy code

Ví dụ 8:
do{
if(bai<soluong){
bai++;
play(bai);
}
}
while(!playing);

Copy code

phát hát tiếp theo khi đã phát xong bài hiện tại, nếu đã là bài cuối thì ngưng.
Do-While ít dùng nên mình k cho code mẫu

• break; và continue;

Lệnh continue;
để thoát khỏi LẦN lặp hiện tại.
Thực hiện lần lặp tiếp theo.
Ví dụ 9:
for(int i=0; i<getWidh(); i++){
if(x==vatcan){
y =10; continue;
}
x++;
}

Copy code

cho x tăng để cho nhân vật đi từ trái qua phải, nếu gặp vật cản thì tránh lên trên.
Khi gặp vật cản thì x không tăng nữa, chỉ có y tăng.
Lệnh break;để thoát khỏi CÂU LỆNH lặp hiện tại.
Thực hiện câu lệnh sau câu lệnh lặp.
Ví dụ 10:
for(int a=0; a==a; a++){
s=s+a;
if(s%a==0)
break;
}

Copy code

lặp đến khi nào s chia hết cho a thì không lặp nữa (có thể dùng while).
* Chú ý:Dùng vòng lặp nên chú ý đến điều kiện lặp khi in ra hay gì đó mà điều kiện lặp là vô hạn thì sẽ tràn ram và OutOfMemory, bài vòng lặp hơi khó nhưng rất quan trọng các bạn cần phải làm đi làm lại dù khi đã quen rồi..

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
04:20:24, 11-08-2015

(Bài 11) Câu lệnh điều kiện if - else
Câu lệnh if dùng rất rất nhiều hầu như game nào cũng phải có trên vài trăm câu lệnh điều kiện. Bài này và một số bài nữa mình chỉ đăng code tổng quát và ví dụ các bạn phải tự gắn nó vào HelloWorld hay Command gì đó.

• Cấu trúc là:
if(điều kiện){ các câu lệnh; }
Copy code

Điều kiện phải là phép so sánh hoặc là biến true/false (boolean).
Ví dụ:
if(a>1){ a=0; }
Copy code

nếu a>1 thì a=0
Có các dấu so sánh là: >, <, >=, <=, == (so sánh bằng), != (so sánh khác).
Ví dụ 2:
if(thang==1){
nam=nam+1;
ngay=0; }

Copy code

nếu tháng bằng 1 tức là qua năm mới rồi.
Ko được viết if(thang=1)... Vì đó là phép gán chứ ko phải phép so sánh.
Ví dụ 3:
...
public class c extends MIDlet{
boolean a;
int b, c;
.......
if(a){ b=1; c=2; }

Copy code

đây là ví dụ ko dùng phép so sánh mà dùng biết boolean.
Ví dụ 4:
if(bidanh){ hp=hp-10; }
Copy code

nếu bị đánh thì mất 10 máu.
..
Có thể dùng kết hợp nhiều điều kiện.
Ví dụ 5:
if(ngay==2 && thang==9){ form.append("ngày quốc khánh Việt Nam"); }
Copy code

nếu ngày là 2, tháng là 9 thì viết lên Form dòng chữ đó.
• Có các cách kết hợp sau:
và &&, hoặc ||, thôi dùng từng đấy thôi.
Ví dụ 6:
if(hp==0 || gold >=1000){
endgame=true; }

Copy code

nếu hết máu hoặc số tiền đạt mốc 1000 thì kết thúc game.
..
• Cấu trúc đủ:
if(điều kiện){
các câu lệnh;}
else{
các lệnh khác; }

Copy code

nếu điều kiện đúng thì làm các lệnh đầu tiên,nếu sai thì làm các lệnh sau else.
Ví dụ 7:
if(win){
f.append("bạn thắng");}
else{
f.append("bạn thua cmnr"); }
..

Copy code

• Cấu trúc rút gọn:
Ví dụ 8:
if(time==0){
if(hp>0){
f.append("bạn thắng"); }
else{
f.append("bạn thua"); }
}

Copy code

có thể rút gọn là:
if(time==0){ hp>0? f.append("bạn thắng") : f.append("bạn thua");
}

Copy code

Ví dụ 9:
if(a>b) max=a; else max=b;
Copy code

có thể viết gọn là:
max=a>b?a:b;
..

Copy code

Câu lệnh điều kiện rút gọn có thể hơi khó đối vs ng mới nhưng sau này làm nhiều câu lệnh này sẽ thấy nó rất tiện.
Khi có nhiều trường hợp, ta dùng khối lệnh switch..case cho gọn.
Cấu trúc:
switch(biến){
case giá trị 1: dãy lệnh 1; break;
case giá trị 2: dãy lệnh 2; break;
...
case giá trị n: dãy lệnh n; break;
default: dãy lệnh n+1;
}

Copy code

Đầu tiên sẽ xét biến xem nó bằng giá trị bao nhiêu trong các giá trị sau case. Sau đó thực hiện đống lệnh tương ứng. Làm xong thoát khỏi khối switch luôn.
Nếu biến không bằng giá trị nào cả thì sẽ thực hiện dãy lệnh sau default (không có cũng được).
..
Ví dụ:
switch(chon){
case 1: f.append("chọn 1");
break;
case 2: f.append("chọn 2");
break;
default: f.append("chưa chọn");
}

Copy code

Ví dụ:
switch(tf.getString()){
case '+': kq=a+b; break;
case '-': kq=a-b; break;
case '*': kq=a*b; break;
case '/': if(b!=0) kq=a/b; break;
defailt: f.append("nhập cái vẹo gì thế");
}

Copy code

Tôi thì k hay dùng switch nên k đăng source nhưng nó cũng rất cần thiết để rút gọn câu lệnh điều kiện if - else.

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
04:19:41, 11-08-2015

(Bài 10) Các kiểu dữ liệu cơ sở và các vấn đề liên quan.
Sau đây tôi sẽ giới thiệu với các bạn các kiểu dữ liệu cơ sở trong java và các vấn đề liên quan đến chúng.
Để khai báo một biến ta khai báo như sau:
[kiểu dữ liệu [tên biến;
Ví dụ:
int n;
thì
int:là viết tắt của Integer kiểu số nguyên.
n:là tên biến.
• Kiểu số nguyên:
- Java có các loại số nguyên sau:
1: byte ở dạng 8bits, giá trị từ -256 đến 255
2: short ở dạng 16bits, giá trị từ -32768 đến 32767
3: int ở dạng 32bits giá trị từ -2147483648 đến 2147483647
4: long ở dạng 64bits, giá trị k đếm xuể :shok:
- Các phép tính trên số nguyên:
= bằng
!= không bằng(khác)
> lớn hơn
< nhỏ hơn
>= lớn hơn hoặc bằng
<= nhỏ hơn hoặc bằng
, -, *, / cộng, trừ, nhân, chia
% chia lấy dư
tăng 1 đơn vị
- Các điều chú ý khi tính toán:
* Nếu cả hai toán hạng đều là kiểu long thì kết quả sẽ là kiểu long
* Nếu toán hạng nào không phải là long thì nó sẽ đc chuyển thành long trước khi thực hiện phép tính.
* Nếu 2 toán hạng đều không là long thì kết quả sẽ là int kể cả byte ,short
* Bất kì một toán hạng byte hay short nào cũng được chuyển thành int sau đó mới thực hiện phép tính.
• Kiểu số thực (kiểu dấu chấm động):
- Java hỗ trợ các kiểu số thực sau:
1: float ở dạng 32bits
2: double ở dạng 64bits
- Các điều chú ý khi tính toán:
* Nếu mỗi toán hạng đều thuộc kiểu dấu chấm động thì phép tính chuyển thành phép tính dấu chấm động
* Nếu một toán hạng là double thì tất cả các toán hạng khác đều chuyển thành kiểu double trước khi thực hiện phép toán.
* Nếu không có toán hạng nào là kiểu double thì các toán hạng đều được chuyển về kiểu float
• Kiểu dữ liệu char(kiểu kí tự):
- Đây là kiểu dữ liệu về kí tự. Mỗi biến char sẽ có giá trị là một kí tự Unicode.
- Ví dụ: ’a’,’b’,’$’,…
- Giá trị khởi tạo mặc định của kiểu char là null
• Kiểu dữ liệu Boolean:
- Đây là kiểu dữ liệu chỉ nhận một trong 2 giá trị true hoặc false(đúng hoặc sai)
- Giá trị khởi tạo mặc định của kiểu boolean là false

Like: 0
avatar by Pham_loi Pham_loi
Chức vụ:
04:18:59, 11-08-2015

[Bài 9 List gugồ gọi là danh sách
Bắt đầu:
>>List là 1dạng danh sách trong đồ hoạ cấp cao
hiểu vậy thôi

>>cách khai báo 1List(chỉ cần 1 List là dc rồi)

List l=new List("tên","kiểu list");
Copy code

tui thường dùng kiểu List.IMPLICIT
ngoài ra vẫn còn 1vài kiểu khác nhưng ko cần thiết
>tạo 1list rồi thì nó sẽ chưa có j cả, cta phải append vào thôi:
Cách thêm:
l.append("abc",hình ảnh);
như vậy là màn hình đã có thêm 1dòng "abc" kèm hình ảnh nếu có

>>thêm Command vào list:

l.addCommand(ok);
thêm vào như bt thôi

d.setCurrent(l);
//hiển thị list lên màn hình
XONG phần khởi tạo;

>>Cách dùng:

>cta sẽ dùng Command để sủ dụng nó

public class minh extends MIDlet implements CommandListener{
dùng List trong hàm
commandAction(Command cm,Displayable dp){

>>khai báo vị trí trong List:
int index=l.getSelectedIndex();

//index = vị trí trọn trong list


index=0 tương ứng với vị trí thứ nhất trong List
>if(index==0){
d.setCurrent(f1);
}

nếu chọn vị trí thứ 1 (index =0) thì ta cho hiển thị form 1 ứng với dòng "abc" trong List(dòng đầu tiên)

if(dp==f1&&cm==back){
d.setCurrent(l);

//đang ở form 1 bấm back để trở về List

còn các Command khác thì tùy các bạn
Ngoài ra còn 1số thao tác khác nhưng theo tui thỳ ko cần thiết và chưa bao giờ cần sử dụng
code//
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class minh extends MIDlet implements CommandListener{

Command ok,back,exit; 
Display d;
Form f1,f2;
List l;
public minh(){
l=new List("test list",List.IMPLICIT);
f1=new Form("form1");
f2=new Form("form2");
d=Display.getDisplay(this);
ok=new Command("OK",4,1);
back=new Command("BACK",Command.BACK,1);
exit=new Command("EXIT",7,1);
f1.append("dòng 1 tương ứng form 1");
f1.addCommand(back);
f1.setCommandListener(this);
f2.append("dòng 2 tương ứng form 2 do ta qđịnh");
f2.addCommand(back);
f2.setCommandListener(this);
l.append("vào form1");
l.append("vào form2");
l.addCommand(ok);
l.addCommand(exit);
d.setCurrent(l);
}

public void startApp(){}// code ở hết minh() rồi nên startApp() tui để trống cũng ko sao
public void pauseApp(){}
public void destroyApp(boolean b){
notifyDestroyed();
}

public void commandAction(Command cm,Displayable dp){

int index=l.getSelectedIndex();
if(index==0)d.setCurrent(f1);
if(index==1)d.setCurrent(f2);
if(dp==l&&cm==exit){
destroyApp(true);
}
if(dp==f1&&cm==back||dp==f2&&cm==back){
d.setCurrent(l);
}
}
}

Copy code

>>>Source:
Tải Về Listzip_tLxkt.zip (4.54 KB)

>>>Ảnh minh họa:
img
hãy tải source về xem rõ hơn

Like: 0
Lên trên  Tổng số: 22
« 1 2 3 »







Trực Tuyến: Khách: 1
Diễn đàn teen Việt Nam
CopyRight 2014