Lập trình java nâng cao
LẬP TRÌNH JAVA NÂNG CAO
Spring 2012
- Study Guilde 2012
- Slides: Multithreading, Collection, Networking, JDBC,
1. Study guide 2009 – Study guide 2010
2. Slides & examples 2009 – Slide Servlet – Slide JSP
4. Sách tham khảo
5. Software : JDK&Javadocs, JCreator, Eclipse, NetBeans
6. Bài tập:
JDBC
CÁC BÀI VIẾT LIÊN QUAN
1. Thread
2. Networking
3. RMI
4. JDBC
- Kết nối cơ sở dữ liệu
- Các thao tác cơ bản trong lập trình JDBC
- JPA – Java Persistence API
- Connection Factory
- Biểu diễn quan hệ mối quan hệ master-details bằng JTree – JTable
- Thao tác với Metadata
- Làm việc với Stored Procedure
- Updatable JTable – Cập nhật giá trị ngay khi có thay đổi
- Updatable JTable – Các thao tác CRUD trên JTable
- Chèn và đọc hình từ cơ sở dữ liệu
a. Các bài demo trên lớp:
Vũ Anh Dũng said
Em chào thầy Hải, em mới học Java và đang học cao học ở Korea, trong thời gian ngắn em phải hoàn thiện khả năng của mình về Java, thấy khó khăn thực sự vì nhiều lúc thấy mình mất căn bản trong lập trình, website của thầy rất hữu ích, giá như có thể trao đổi với thầy thường xuyên thì tốt biết mấy, vì em cũng muốn được trau giồi kiến thức và hoàn thành nhiệm vụ ở trường em đang học, mong thầy hồi âm cho em và mong thầy giúp đỡ em thêm.
vovanhai said
Bất cứ thứ gì bạn thắc mắc, nếu tôi có thể nói tôi sẽ nói. Giúp nhau học là điều mong muốn của tôi. Bạn cứ post các câu hỏi của bạn, tôi sẽ cố gắng trả lời.Chúc bạn thành công!
SanSan said
thưa thầy cho em hỏi cách làm wedbrowser mà ko d ùng url ạ, em get chữ từ 1 trang về được nhưng ko get hình ảnh để hiển thị lại được. cảm ơn thầy
vovanhai said
Không dùng url là sao? có phải bạn dùng Socket đọc nội dung của 1 trang web và muốn hiển thị nó không? Nếu vậy bạn có thể dùng JEditorPane để hiển thị, kể cả hình ảnh. Đây là 1 web browser đơn giản, bạn tham khảo nhé! Chúc vui.
Simple Web Browser
SanSan said
Đúng ạ, em dùng socket, tự mở port và parser + render text và images nhưng không biết làm như thế nào cả, thầy có thể hướng dẫn em ko ạ?Cảm ơn thầy nhiều ạ.
SanSan said
thầy có thể hướng dẫn e cách GET và SAVE hình ảnh ko ạ?em cảm ơn thầy nhiều
noluc said
chào thầy.
thầy cho em hỏi là sang học kỳ sau em học java nâng cao . java nâng cao này có phải là J2EE không vậy thầy hay là nó vẩn nằm trong j2SE dạ. nếu không phải thì, java nâng cao nó có liên quan mật thiết gì với J2EE không vậy thầy.
thân thầy.
nguyenthiminhtuyet said
chao thầy.
cho em hỏi .môn java2 này có phải là J2ee ko vậy thầy.
nếu không phải thì nó là nền tảng để mình học tiếp J2EE phải hông vậy thầy.
vovanhai said
Java nâng cao ở đây chưa phải là J2EE nhưng nó là nền tảng để phát triển J2EE. Trong học kỳ tới tôi sẽ chỉnh lại đề cương 1 chút để thiên về J2EE hơn. Bạn hãy đọc trong study-guide sẽ biết mình học gì mà.
Chúc mừng năm mới!
thaituUS said
chào thầy . chúc thầy 1 năm mới thành công và vui khòe.
nhân tiện em có 1 vần đề chưa rõ , nhờ thầy trả lời:
-dến học kỳ này học java nâng cao.chúng em có được học về:
-Thiết kế và phát triển các ứng dụng Web cơ bản dùng JSP/Servlet,EJB.
-Mô hình phát triển ứng dụng: MVC, Struts…
không vậy thầy.hay là chúng em chỉ được học nhửng phần đề làm nền tảng để phát triển mấy cái trên như em nói thôi phải ko vậy thầy.
thân.
vovanhai said
Khi học buổi đầu tiên, tôi sẽ giới thiệu cho bạn rõ nhé!
DoDo said
Chào thầy ! Trong quá trình thầy dạy có đưa ra một số ví dụ để minh họa cho slide bài giảng môn Java2.Do thời gian quá ngắn nên em chưa hiểu rõ lắm. Thầy có thể đưa lại các ví dụ đó để chúng em down về để làm tài liệu học thêm
Cảm ơn thầy
luongaptech said
chào thầy Hải, em cũng đang hoc Java nhưng độ tư duy của em kowi kém vì căn bản ko được vững thầy có cách nào giúp em không ạ.
cảm ơn thầy.
huynh vu said
thay oi xin thay cho em hoi
em dung java de xuat du lieu tu sql len theo dang bang
nhung lam sao de in ra giay theo mot dang ma minh format cho no
vd: in mot file liet ke don dat hang gom co ten,thong tin khach hang,mat hang ma khach dat.
vovanhai said
Thì em chỉ lấy những fields mà em muốn in.
rs=…
String kq=”";
while(rs.next){
kq=rs.getString(“field1″)+”; “+rs.getString(“field2″)+…;
}
//sau đó xử lý kq
Chúc vui!
Huynh Vu said
da cam on thay,
nhung em con mot van de nua ah,
em muon lay du lieu trong sql (mot bang nao do chang han) xuat ra thanh file excel
vay em phai lam sao ah?
em co doc o nhieu dien dan nhung ho khong co chi cach dung java de lam ah.
xin thay chi giup ah.cam on thay.
Khoa said
Thầy ơi TreeSet,HashMap,TreeMap giống và khác nhau chỗ nào vậy
vovanhai said
đọc kỹ trong slides sẽ có câu trả lời nhé!
Khoa said
Thầy ơi em có bài nầy:
package collections;
public class MyWord implements Comparable{
private String word;
private String mean;
public String getWord() {
return word;
}
public void setWord(String word) {
this.word = word;
}
public String getMean() {
return mean;
}
public void setMean(String mean) {
this.mean = mean;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((word == null) ? 0 : word.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MyWord other = (MyWord) obj;
if (word == null) {
if (other.word != null)
return false;
} else if (!word.equals(other.word))
return false;
return true;
}
public MyWord() {
super();
}
@Override
public String toString() {
return this.getWord();
}
public MyWord(String word, String mean) {
super();
this.word = word;
this.mean = mean;
}
@Override
public int compareTo(MyWord o) {
return this.getWord().compareToIgnoreCase(o.getWord());
}
}
package collections;
import java.util.HashMap;
public class MyDic {
private HashMapmydic;
public MyDic() {
mydic=new HashMap();
}
public boolean themTu(MyWord w) {
if (mydic.containsValue(w)) {
return false;
}
mydic.put(w.getWord(), w);
return true;
}
public MyWord traTu(String word) {
return mydic.get(word);
}
public boolean xoaTu(String word) {
if (mydic.containsKey(word)) {
mydic.remove(word);
return true;
}
return false;
}
public int demSoTu() {
return mydic.size();
}
}
package collections;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
public class MyDicGUI extends JFrame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = 1L;
JTextField txtWord,txtMean;
JTable table;
DefaultTableModel dtm;
JButton btnThem,btnTra;
MyDic mydic=new MyDic();
JLabel lblNghia;
public MyDicGUI() {
setSize(600,600);
setTitle("Từ điển");
setDefaultCloseOperation(EXIT_ON_CLOSE);
Box box=Box.createVerticalBox();
Box box1=Box.createHorizontalBox();
Box box2=Box.createHorizontalBox();
Box box3=Box.createHorizontalBox();
Box box3a=Box.createHorizontalBox();
Box box4=Box.createVerticalBox();
box1.add(new JLabel("Từ:"));box1.add(txtWord=new JTextField());
txtWord.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e) {
if (e.hashCode()!=-1) {
String s=txtWord.getText();
//String kq="";
//System.out.println(dtm.getValueAt(999, 0).toString().substring(0, 2));
for (int i = 0; i =s.length()) {
if (s1.substring(0, s.length()).equalsIgnoreCase(s)) {
//System.out.println(s);
System.out.println(s+";"+s1);
}
}
}
}
}
});
box2.add(new JLabel("Nhĩa:"));box2.add(txtMean=new JTextField());
box3.add(btnThem=new JButton("Thêm"));btnThem.addActionListener(this);
box3.add(btnTra=new JButton("Tra"));btnTra.addActionListener(this);
box3a.add(lblNghia=new JLabel());
lblNghia.setPreferredSize(new Dimension(300,30));
String []head={"Từ","Nghĩa"};
dtm=new DefaultTableModel(head,0);
box4.add(new JScrollPane(table=new JTable(dtm)));
/*new Thread(
new Runnable() {
public void run() {
int i=0;
while (i < 1000) {
mydic.themTu(new MyWord("" + i, "so thu:" + i));
String[] s = { "" + i, "so thu:" + i };
dtm.addRow(s);
i++;
}
}
}).start();*/
int i=0;
while (i < 1000) {
mydic.themTu(new MyWord("" + i, "so thu:" + i));
String[] s = { "" + i, "so thu:" + i };
dtm.addRow(s);
i++;
}
box.add(box1);
box.add(box2);
box.add(box3);
box.add(box3a);
this.add(box,BorderLayout.NORTH);
this.add(box4,BorderLayout.CENTER);
}
@Override
public void actionPerformed(ActionEvent e) {
Object o=e.getSource();
if (o.equals(btnThem)) {
try {
if (txtWord.getText()!=null) {
mydic.themTu(new MyWord(txtWord.getText(),txtMean.getText()));
String []s={txtWord.getText(),txtMean.getText()};
dtm.addRow(s);
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
if (o.equals(btnTra)) {
lblNghia.setText(mydic.traTu(txtWord.getText()).getMean());
}
}
public static void main(String[] args) {
new MyDicGUI().setVisible(true);
}
}
———————————————————-
Vấn đề ở chỗ:Khi em chạy MyDicGUI với mong muốn là mỗi sự kiện keypress ở txtWord thì sẽ in ra những từ giống với từ ở txtWord.text ,thế mà khi chạy nó không in ở keypress lần đầu mà in ở keypress lần sau???
Đoạn code:
txtWord.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e) {
if (e.hashCode()!=-1) {
String s=txtWord.getText();
for (int i = 0; i =s.length()) {
if (s1.substring(0, s.length()).equalsIgnoreCase(s)) {
System.out.println(s+";"+s1);
}
}
}
}
}
});
———————————————-
Với lai thầy chỉ em cách setSelected của JTalbe
Em cám ơn thầy nhiều.
Khoa said
Em sửa lại tí:Chuỗi ở txtWord giống các Chuỗi phẫn đầu của word
vovanhai said
Đây là đoạn code mà khi ta gõ lên textField, tương ứng phần tử trong 1 list sẽ được chọn (giống lạc việt Tđ)
public void keyReleased(KeyEvent e) {if(e.getKeyCode()==10){
tfWord.setText(listWords.getSelectedValue().toString());
tfWord.selectAll();
selWord=(MyWord)listWords.getSelectedValue();
Lookup(tfWord.getText());
return;
}
for (int i = 0; i < dlm.size(); i++) {
MyWord word=(MyWord)dlm.get(i);
if(word.getWord().startsWith(tfWord.getText().trim())){
listWords.setSelectedValue(word, true);
break;
}
}
}
Khoa said
Em cám ơn thầy,em làm được rồi và em cũng hiểu lỗi cua em.
if (e.hashCode()!=-1) {
đoạn code đó để làm gì vậy thầy
tèo said
Thầy ơi em dùng FileInputStream.read(buf); để đọc một file nhạc. cái đó trả về kiểu “int” vậy làm sao em chuyển thành kiển byte được thầy. Em mới học java mong thầy thông cảm.
Cảm ơn thầy!
changngoc said
Chào thầy!
Em làm thử cái demo phân kết nối java với SQL server. Em đã cài SQL Server 2000 Driver for JDBC xong. Nếu em viết bằng Jcreator thì chạy bình thường. Nhưng khi em viết bằng Eclipse thì lại báo lổi :”[Microsoft][ODBC Driver Manager] Invalid cursor state” Mặc dù em đã right-click vào cái Project chọn Build Path –>Configure Build Path… –> libraries –> add Extenal Jar…và chọn 3 file “msbase.jar,mssqlserver.jar và msutil.jar” nhưng vẫn báo lổi trên.
Nếu Eclipse không chạy được cái này thì khi thi giữa kỳ em viết bằng Jcreator dược không thầy.
Have a nice day!
vovanhai said
Em dùng driver 2005 đi. chỉ có 1 file thôi. Tôi đã demo trên lớp ngon lành rồi mà!
vovanhai said
Trả về kiển int là do khi đọc hết file, giá trị -1 sẽ trả về, còn dữ liệu được lưu trong tham số buf .
HuynhTrang said
Chào thầy , Em có một vài thắc mắc về Java ! Nhưng chưa tìm cách giải quyết được rât mong thầy có thể giúp em ! Em có viết một phần mềm quản lí nhỏ sử dụng công cụ NetBean . Nhưng do mới bắt đầu nghiên cứu về java nên em không biết làm thế nào để in bao cáo thống kê đơn đặt hàng ? .Em không biết trong java có đối tượng nào giống đối tượng DataSet ,DataTable,DataView của C# không .Khi viết xong một phần mềm thì làm sao em có thể đóng gói để khi người dùng cài đặt phần mềm không cần máy ảo Java thì nó vẩn chạy được ? Rất mong thầy có thể giúp em trong thời gian ngắn nhất . Cám ơn thầy !
vovanhai said
báo cáo thống kê thì em có thể dùng html report để in. Em tham khảo thêm ở phần lập trình java nâng cao trong trang này để biết thêm. Hoặc em có thể dùng 1 loại báo cáo chuyên nghiệp nào đó.
Trong java, đối tượng giống DataSet ,DataTable,DataView của C# đó là JTable, giải quyết vấn đề trên nó rất tốt.
Còn vấn đề đóng gói em có thể tham khảo bài viết : http://vovanhai.wordpress.com/java/l%e1%ba%adp-trinh-java-can-b%e1%ba%a3n/dong-goi-1-%e1%bb%a9ng-d%e1%bb%a5ng-java-thanh-file-exe/
Chúc vui!
nguyenngoctoan said
chao Thay,
Thay vui long huong dan dum em cach cai dat apache TomCat trong eclipse,rat mong duoc su phan hoi som nhat cua Thay.Nhan dip toi ngay 30/4 em Chuc Thay va Cac Thanh Vien trong Gia Dinh Thay co nhung ngay nghi le vui ve.
vovanhai said
Trong Eclipse J2EE vào menu Window->References, 1 cửa sổ hiện ra. Phía bên trái là 1 cây liệt kê các mục cấu hình, bạn chọn đến thẻ Server, chọn tiếp mục Runtime Environments, Nhấn nút Add, chọn Apache->Apache Tomcat 6, nhấn Next, Nhấn nút Browse và tìm đến thư mục bạn giải nén Tomcat. Nhấn Finish. OK.
xuất dữ liệu ra file word, excel said
Em chào thầy , em đang gặp rắc rối trong việc xuất dữ liệu từ java ra file word,excel và pdf.Dữ liệu em load từ trong csdl mysql vào trong java thành các đối tượng và em muốn lưu xuống file word,excel, và pdf. Em mong thầy giúp đỡ. Em cảm ơn thầy.
vovanhai said
Về việc xuất ra excel thì bạn có thể dùng định dạng csv(Comma-separated values) và dạng này có thể dùng excel để mở. Đối với word thì thôi nghĩa bạn có thể xuất ra dạng html sau đó gán đuôi của file là doc thì word sẽ mở ngon lành.
Còn đối với pdf thì bạn cần có 1 thư việc để xuất, cách làm như sau:
- Bạn export dữ liệu ra xml(cái này dễ – dùng WebRowSet)
- Dùng thư viện fop(http://xmlgraphics.apache.org/fop/) để chuyển ra pdf.
Chúc vui!
Nguyen Phuong Cung said
Em chào thầy, hiện tại em đang muốn học một chút java, mong thầy hướng dẫn cho em vài điều cơ bản được không ạ, em cần vài ví dụ cơ bản về tạo form với swing( nhưng phải tạo form bằng tay, vì tụi em code trên JCreator) mong thầy cho em vài ví dụ để em có thể nghiên cứu, cám ơn thầy nhiều. Có gì mong thầy gửi giùm em vào mail: handsomeboy3091986@yahoo.com. Em mong tin thầy.
thachthao said
Thầy ơi, em đang sử dụng jsf để làm trang web, nhưng em đang gặp rắc rối. Dữ liệu của em được kết nối từ mysql. Em lấy dữ liệu lên và test trong model chạy bình thường, sau lúc em lấy lên hiển thị lên trang web thì nó bảo lỗi:
“java.lang.ClassNotFoundException: com.mysql.jdbc.Driver”
mặc dù em đã có add thư viện mysql vào project rồi. Em mong thầy gợi ý cho em phải làm sao để dữ liệu có thể hiện thị trên trang web.Em cảm ơn thầy.
vovanhai said
Em phải copy thư viện này vào thư mục WEB-INF\lib của project.
NguyenPhamAnhDung said
Thay oi.cho em hoi chung nao co danh sach cam thi java2 cua lớp NCTH1A vay thay em xin cam on thay
Quyền said
Dạ,em chào thầy!
Em đang làm 1 bài về Multi Thread Socket Java Chat
Em đã tìm hiểu nhiều demo trên mạng rồi.Đã thõa mãn Tính MutilThread trong xử lý của Server rồi
Nhưng giờ em muốn Cái server của em nó xử lý Asynchronous mà dùng CallBack()
Thầy giúp em với,em mó mẩm 2 ngày nay rồi mà chưa đạt hiểu quả!!!
Quyen said
Thầy ơi,giúp e với
Em đang làm Asynchronous socket sử dụng CallBack()….em mò cả ngày rồi mà chưa ra,thầy cho em 1 hướng đi đc ko?
CallBack là hàm sẽ tự động thực thi lại 1 hàm nào đó,thay vì sài while(true){…}
mong thầy hồi âm sớm
Quyen said
em cam on thây nhìu
Quyen said
sao lâu wá chư`ng vâ.y thâ`y
lê anh said
Thưa thầy ! em muốn làm một chương trình bằng javaswingcho phép đăng nhập. Nhưng làm thế nào để người dùng có thể ấn enter để đăng nhập luôn thay vì phải click vào button login. Em cám ơn thầy!
vovanhai said
Cho nút lệnh lắng nghe KeyListener. lấy keycode=13 thì gọi action đăng nhập.
thachphongphong said
cho em hoi em su dung design pattern no bao loi import java…text; va` mot so cai nua ? khac phuc nhu the na`o a?
Van Son said
Thầy ơi , thầy có thể hướng dẫn chính xác cho em từng bước về việc xuất dữ liệu của 1 table vào 1 file PDF được ko thầy ?
vovanhai said
Vào trang này nhé: http://www.lowagie.com/iText/.
duoichon said
Chào thầy!
Em đang làm project j2me bằng netbean, PC đóng vai trò server còn máy điện thoại ảo java là client. Tại server em có một mảng các số thực muốn truyền cho client, hiện em ko biết cách thiết lập kết nối server-client, em đã tìm hiểu các kết nối http,tcp,socket nhưng ko áp dụng được vào project của em, rất mong thầy cho em một vài hướng dẫn.
Em cảm ơn thầy nhiều!
Hoàng Thu Hoài said
Em chào thầy!
Thầy ơi cho em hỏi. em nhập Dữ liệu ở jTextFields nhưng khi nhấn nút save thì insert dữ liệu thành công. Nhưng dữ liệu không hiện lên bảng ngay mà phái thoát ra chạy lại thì nó mới hiện dữ liệu mình vừa mới nhập vào. Thầy giúp em load lại bảng jTable với. Em chân thành cảm ơn thầy!
vovanhai said
Bạn insert bằng SQL statement thì làm sao mà update ngay trừ khi bạn tự thêm vào table. Với lại JTable đâu phải là binding control kiểu datagrid view bean CS hoặc VB.net đâu. Tự đưa vào bạn ơi!
Tran minh ly said
Thầy có thể demo một ứng dụng xuất ra file Excel theo định dạng CVS không thầy, tại em đang làm ứng dụng quản lý điểm học sinh nên cần xuất báo cáo theo định dạng Excel.
vovanhai said
hình như có đâu đó trong blog rồi đấy nhỉ!
Em co van de can hoi nhu sau: said
viec load 1 file trong may tinh cua minh thi khong co van de, nhug jo em muon load ca 1 thu muc(or load ca mycomputer, tuc la trong may tinh cua minh co bao nhieu O thi load het len duoi dang tree nhu khi minh mo computer trong may)thi em chua biet giai quyet nhu the nao, rat mog dc an giup do a?
vovanhai said
Bạn mà load hết cả cấu trúc thư mục của đĩa thì có mà mất …. cả ngày. Bạn chỉ nên load 1 cấp ở root thôi rồi “mồi” cho nó để load tiếp khi user chọn thư mục họ cần mở. Tham khảo bài “Ứng dụng duyệt hình ảnh với CSharp”.
Chúc vui!
Nguyễn Trần Vũ said
Chào thầy, thầy cho em hỏi, hiện tại em định làm 1 module phân quyển trong ứng dụng Java desktop của em, giờ nếu là cách bình thường, thì em chỉ setVisible(false) cho các form mà user đó không có quyền dùng.
Trong quá trình làm thì vấn đề nảy sinh là : trong 1 ứng dụng thực sự, việc phân quyền như vậy là không khả thi, em nghĩ theo hướng khác, vậy là em có 1 table t_User, 1 table t_Group, 1 table t_Role, ý em ở đây là : 1 group có nhiều user, và 1 group được phân quyển trong table t_Role, trong t_Role sẽ có các column như : view, edit, delete.
Em mới suy nghĩ đến đây, có gì thiếu nhờ thầy hướng dẫn thêm giúp em. Cảm ơn thầy.
duyen said
mình vừa mới được tìm hiểu về lập trình mạng mà thầy lại cho lam báo cáo.cả tuần nay mình loay hoay mãi hỏi mấy bạn nhưng cũng chỉ hiểu 1 cách được sơ xài… số là mình qly nhân viên(maso,tennv,ngaysinh,que,diachi,chucvu, phai).mình muốn khi nhấn button ‘lưu’ thì all những gì mình nhập vào các textfile như trên được đưa vào SQL server và những dữ liêu đó lại load ngược lại hiển thị trên Jtable (quan ly thong tin nhan viên)bạn nào có thể giải thích giúp mình nguyên lý thực hiện,cũng như cách lam của những yêu cầu này không vậy. mình cảm ơn nhiều.có code thì càng ok. hihi..
thân!
duyen said
không ai giúp mình hả?
Nguyễn Ngọc Toàn said
liên hệ blog này được giải đáp
Nguyên Thạnh said
Chào thầy, em là sinh viên trường CDCN Đà Nẵng, em có một số vấn đề thắc mắc, mong thầy hướng dẫn giúp em
Mục hỏi về JSF phải post vào link nào ạ, em chưa biết sitemap của blog này ra sao nên không biết cách để câu hỏi ở đâu cho phù hợp, mong thầy thông cảm.
em đang tìm hiểu về công nghệ JSF, ban đầu là không biết hoàn toàn, em hiểu nôm na JSF gần giống như Swing và awt, một thư viện bao gồm các component có sẵn để lấy ra và dùng lại được, em không hiểu mô hình hoạt động của nó, theo kiểu kế thừa MVC(model controller view), trong thời gian chờ phản hồi của thầy em sẽ nghiên cứu thêm, thầy có thể giúp em tiếp cận JSF bằng cách nào dễ dàng nhất không ạ, chỉ cần hiểu khái niệm, kiến trúc hoạt động, máy chủ web chạy ứng dụng nhanh hay chậm hơn? vì em học chỉ tìm hiểu để viết báo cáo nên không cần yêu cầu gì nhiều. Mong thầy giúp đỡ, em xin cảm ơn ạ
vovanhai said
Bạn vào đây nhé: http://vovanhai.wordpress.com/web/jsf-java-server-face/
Phúc Trường said
thưa thầy Hải , tình cờ em lướt web vào đây , em đang có thắc mắc là , cái Eclipse của em ấy tại sao cái bình thường thì em gõ Syso và Ctrl + Space thì nó thành System.out.println(); mà giờ nó ko có cái gì hết thầy ơi, bất kỳ câu lệnh nào cũng thế , thầy cho em hỏi là nó làm sao ạ , mà khi mình chạy chương trình thì vẫn đc thầy ạ , có gì thầy hồi âm cho em với nha , em cám ơn thầy nhiều ạ .
Huỳnh Kim Bách said
Thưa thầy, em đang học ở Aptech Đà Nẵng, em mới học java, em có 1 assignment yêu cầu em phải tạo 1 Form có chức năng mở file *.txt, sửa chửa và sau đó lưu lại nhưng ngoài ra assignment còn có 1 yêu cầu nữa là khi người dùng nhấn nút exit, nếu file của người dùng đã được lưu lại thì Form sẽ thoát ra bình thường, nếu file của người dùng chưa lưu lại hoặc đã lưu nhưng nội dung được thay đổi thì Form sẽ hiện lên một thông báo ” Bạn có muốn lưu lại không ?” ( chức năng này giống notepad hoặc Microsoft office ). Mong thầy giúp cho.
vovanhai said
Menu Window->Reference, mở chọn mục Java trong cây bên trái, chọn tiếp Editor, chọn tiếp Template. Coi thử đã check hết chưa!
vovanhai said
Window->References->Java->Editor->Templates.
Kiểm tra có và check chưa?
Fjn said
Thưa thầy, em vừa học xong lớp java2 của thầy. Em rất thích java.
Nhưng em vẫn không biết để xin vào một công ty lập trình java thì em cần những kiến thức gì ? Thầy có thể gợi ý cho em được không ?
Em cám ơn thầy. Chúc thầy một ngày vui vẻ !
vovanhai said
Học tốt J2EE là xin việc OK. Nó bao gồm nhiều thứ, chẳng hạn: Servlet,JSP, EJB,… . Cũng nên có 1 framework nào đó, chẳng hạn JSF, Struts,…
Chúc thành công!
giúp em bài tập này said
em có chương trình này, Mong Thầy và anh. chị , em giúp dùm, cám ơn
Viết ct nhập mảng số nguyên. tính trung bình cộng các số dương.dùng List để biểu diễn mảng số nguyên, phải có, các btton cho phép, thêm,xóa,sửa các phần tử của mảng
cám ơn !
lee said
Thưa thầy, em có viết chương trình java sử dụng các thư viện java bên ngoài của các tổ chức khác(như: apache,w3c để theo tác với các loại dữ liệu: .pdf, .xsl, xml…) thì làm thế nào để thiết lập các thư viện đó mà import nó vào trong chương trình của mình được hả thầy. Và em có download các thư viện đó về rồi nhưng không biết cấu hình như thế nào. Thầy hay bạn nào vui lòng giúp em. (Em đang dùng editplus, eclipse-helios)
Lee said
Em đã tự trả lời được câu hỏi của mình rồi thầy ạ.
Binh said
Em chào Thầy ! Em đang viết một ứng dụng nhưng chưa biết cách tạo report va kết xuất report ra máy in ,kết xuất dữ liệu từ resultSet re dạng excel hay pdf như thế nào cả .Mong Thầy hướng dẫn cho em ! cảm ơn Thầy !
destiny_68 said
Xin chào thầy.
Thầy có thể cho em biết định nghĩa của JEditorPane và các ứng dụng của nó được không?
Em đang tìm tài liệu để làm bài giới thiệu về JEditorPane mà không tìm được nguồn thầy có thể giúp em không ạ?
Các bạn có ai biết thì chỉ giúp mình luôn nha
Cảm ơn thầy và mọi người
Binh said
Minh xin tra loi giup ban nhe: Ban go vao google : JEditorPane in java” thi no se cho ban mot loat link de ban tham khao. No cung rat de dung khong co gi kho lam dau. Ban co the tham khao theo link nay nhe :
http://download-llnw.oracle.com/javase/1.5.0/docs/api/javax/swing/JEditorPane.html
nguyenthanhtung said
e moi bat dau hoc nam nay e cung thich mon java lam.nhung chua hiu j ve no.mong thay giup e.
mai said
Thay oi loi nay sua the nao :
Error : Invalid path, \bin\javac.exe -g -classpath D:\java\baitap02 -d D:\java\baitap02 D:\java\baitap02\b2.java
Võ Văn Hải said
Em gõ lệnh kỳ quá. cài đặt lại PATH đi. Xem ở mục cài đặt JDK.
mai said
Thầy ơi ổ C của em dung lượng thấp nên em cài jdk và JCreator vào ổ D.Em đã sửa Path là
;%JAVA_HOME%\bin
và thêm JAVA_HOME ở dưới .Nhưng khi chạy bài thì nó vẫn báo lỗi :
Error : Invalid path, D:\java\jdk\bin\java.exe -classpath D:\JCreatorV4\baitap02 b2
Process completed.
Vậy phải sửa thế nào ạ.
Võ Văn Hải said
Có Jcreator rồi thì cần gì chạy bằng command line!
ATM said
Em xin chào thầy !
Hiện nay em và 1 số bạn trong lớp đang cùng thảo luận làm 1 bài tập lớn về viết 1 chương trình phần mềm. Thầy có thể chỉ cho chúng em cách thức làm bài theo nhóm được không ạ?
Nhân tiện đây Thầy bày cho em phương án tạo giả lập máy rút tiền tự động ATM, em mong được sự giúp đỡ của Thầy!
Nguyễn Thành said
Em chao thẩy thầy có thể giúp em demo form đăng nhập để giúp người dùng kết nối với csdl được không thầy? Em càm ơn thầy nhiều lắm!
LeVanHuu said
Em xin chào thầy !
Thầy có thể chỉ cho em cách dùng DJ.Java Decompiler được không ạ ? Vì em được biết phần mềm này có thể sinh mã nguồn java.
Em cảm ơn thầy và mọi người.
Võ Văn Hải said
Thầy chưa dùng bao giờ.
Võ Văn Hải said
Làm việc nhóm là cả 1 quá trình không phải như vài dòng trong là được. Nếu muốn hiểu rõ phải đọc thêm ở 1 số sách bàn luận về làm việc nhóm!
NGUYÊN THÀNH said
Em chào thầy! Em đang làm đổ án cuối kì về chia sẻ video từ server qua client và ngược lại. Em không biết nên bắt đầu tử đâu. Em rất mong sự giúp đỡ của thầy! Em cám ơn thầy rất nhiều! Cảm ơn thầy đã lắng nghe yêu cầu cùa em!
Võ Văn Hải said
Thực sự lúc này tôi quá bận nên chưa làm được. Xin lỗi bạn. Tôi sẽ cố gắng sớm.
pham duc phung said
thầy ơi! cho em hỏi làm thế nào để đưa tiếng việt vào trong java được zậy thầy!(ví dụ: trang login ,em muốn thay đổi chữ login —> thành Đăng nhập thì làm sao thầy?có cần phần mềm nào ko thầy?
Mong thầy giúp dùm em ạ!em cảm ơn thầy!!
Khoa said
Chào Thầy!
Hiện em đang muốn viết một ứng dụng trên java để chạy file .flv em nhờ thầy chỉ giùm em, em đang rất cần. Cám ơn thầy
luuthe said
em chào Thầy! em là sinh viên DHSP Đà Nẵng. Em co làm báo cáo về MVC trong swing (java nâng cao). Em tìm tài liệu mà ít có. Thầy có thể vui lòng gửi cho em được không? em cảm ơn Thầy nhiều!
Ha Quang said
Em xin chào thầy !
Giả sử em có 1 JTable với các cột là Mã Sách, Tên Sách, Tác giả. Khi em insert vào CSDL các bộ (GT01,Giải Tích,Nguyễn Văn An), (GT02,Giải Tích,Nguyễn Văn An), (GT03,Giải Tích,Nguyễn Văn An).
Bây giờ với các bộ có cùng Tên Sách, Tác giả và chỉ khác nhau mã sách thì em muốn nhóm các mã sách đó vào 1 JComboBox thì phải làm thế nào ạ?
Em xin cảm ơn thầy và mọi người.
Võ Văn Hải said
Ý em có phải là insert combobox vào JTable không? Đây lả ví dụ:
package as;
import java.awt.Component;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
public class ComBoInTable {
public static void main(String[] args) {
JTable table = new JTable();
DefaultTableModel model = (DefaultTableModel)table.getModel();
// Add some columns
model.addColumn(“A”, new Object[]{“item1″});
model.addColumn(“B”, new Object[]{“item2″});
Object []row2={“item3″, “something”};
model.addRow(row2);
// These are the combobox values
String[] values = new String[]{“item1″, “item2″, “item3″};
// Set the combobox editor on the 1st visible column
int vColIndex = 0;
TableColumn col = table.getColumnModel().getColumn(vColIndex);
col.setCellEditor(new MyComboBoxEditor(values));
// If the cell should appear like a combobox in its
// non-editing state, also set the combobox renderer
col.setCellRenderer(new MyComboBoxRenderer(values));
JFrame frm=new JFrame();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(400,400);
frm.add(new JScrollPane(table));
frm.setVisible(true);
}
}
class MyComboBoxRenderer extends JComboBox implements TableCellRenderer {
public MyComboBoxRenderer(String[] items) {
super(items);
}
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
super.setBackground(table.getSelectionBackground());
}
else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
// Select the current value
setSelectedItem(value);
return this; }
}
class MyComboBoxEditor extends DefaultCellEditor {
public MyComboBoxEditor(String[] items) {
super(new JComboBox(items));
}
}
trongcuong1710 said
Gửi thầy hải, trong một lần tình cờ search thông tin thì em thấy được trang web này của thầy, sẵn đang có chỗ ko bik nên mạn phép hỏi thầy, hiện em đang làm project cho công ty và gặp bí ở chỗ export ra file .csv. Em mún export ra file .csv có format dựa trên file template.csv kèm theo sau đây, thầy có thể cho em xin code sample để tham khảo đc ko ạ. Xin cám ơn thầy ạ
File template.csv: http://www.mediafire.com/file/1oit5t99ym9qn6a/template.csv
Võ Văn Hải said
Tôi không biết bạn export cái gì ra cvs. Nếu là 1 resultset thì bạn cứ duyệt qua resultset theo kiểu:
PrintWriter out=new PrintWriter(new FileOutputStream(sFileName));
///....
ResultSet rs=...;
int cols=rs.getResultSetMetaData().getColumnCount();
String s="";
while(rs.next()){
s="";
for(int i=0;i<cols;i++){
s+=rs.getString(i+1)+",";
}
out.println(s);
}
out.close();
Trần Quốc Hiếu said
Thầy cho em hỏi cái này ạ! em tìm hoài mà không ra cách làm:
em đã làm cho bảng của database hiện ra bảng của Java được rồi, nhưng khi thay đổi giá trị của nó thì làm sao để cập nhật được giá trị mới ấy vào trong bảng. Em mới chỉ làm được phần tương tự là cập nhật giá trị từ trong jtextfield vào trong bảng thôi ah`.
code: hiển thị table của database ra bảng của giao diện trên java từ database.
try {
Class.forName(“com.mysql.jdbc.Driver”);
Connection con = asteriskmanager.Connection.getConnection();
if (con != null) {
System.out.println(“Kết nối thành công!”);
}
java.sql.Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(“select * from price”);
ResultSetMetaData rsmeta =(ResultSetMetaData) rs.getMetaData();
int num_col = rsmeta.getColumnCount();
while (rs.next()) {
Object col[] = new Object[num_col];
for (int i = 0; i < num_col; i++) {
col = rs.getObject(i + 1);
}
DefaultTableModel df = (DefaultTableModel) Pricetable.getModel();
df.addRow(col);
}
} catch (Exception e) {
e.printStackTrace();
}
————————————-
Code cập nhập khi bấm phím Submit:
private void SubmitbuttonActionPerformed(java.awt.event.ActionEvent evt) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con= (Connection) asteriskmanager.Connection.getConnection();
ResultSet rs = stmt.executeQuery("select * from price");
if ( con!=null ) {System.out.println("Kết nối thành công (pice)!");}
java.sql.Statement stmt=con.createStatement();
while (rs.next()) {
/* code phần này em muốn là nó sẽ cập nhật giá trị thay đổi trong bảng trên java và sau đó cập nhật lại vào database nhưng em chưa làm được. */
}
} catch(Exception e) {
e.printStackTrace();
}
}
// em đã tạo một lớp có tên là connection để kết nối rồi nên những phần kết nối trên em chỉ là lấy ra xài thôi. Bài tập này em dùng netbean để làm, giao diện em dùng Jframe Form.
Mong thầy giúp đỡ. em cám ơn thầy nhiều.
Võ Văn Hải said
Chào bạn!
JTable không như DatagridView bên C#/VB nên việc code cho nó thao tác với cơ sở dữ liệu khó hơn. Google theo từ khóa [JTable database] thì có rất nhiều người hỏi về vấn đề này và cũng có rất nhiều giải pháp cho nó.
Nếu như bạn chỉ muốn cập nhật giá trị đã tồn tại trên JTable thì tôi có 1 giải thuật đề nghị như sau:
1. Duyệt qua từng dòng trên JTable(tất nhiên cột ID của bạn không cho thay đổi)
2. So sánh các giá trị trên JTable với dữ liệu trong cơ sở dữ liệu coi có thay đổi không.
2.1. Nếu có thay đổi thì cập nhật theo ID.
2.2. Nếu không thì bỏ qua
Chúc thành công!
Khoa said
Chào thầy. Em là sinh viên cũ của thầy
Có cách nào nhúng flash vào java application không thầy. Em tìm hoài mà không ra. Mong thầy dành ít thời gian chỉ em. Em đang chờ thầy trả lời.Em cám ơn
Võ Văn Hải said
Đây là code chèn flash vào JSP page. Bạn đổi link src lại nhé!
Khoa said
Còn flash trên awt thì sao thầy.
Luong Nguyen said
chào thầy Hải!
thầy có thể giúp em phần quyền trong java RMI được ko ạh.
em đnag làm đồ án về javaRMI nhưng cái phần quyền cho admin và Smod em ko làm được, mong Thầy giúp em.
chào thầy!
Luong Nguyen said
chào thầy! Tôi làm về gửi tin nội bộ bằng RMI, thầy cách nào soạn thảo tin có thể cho ảnh vào và hiển thi tin như word hoặc html ko ạh??
mong thầy giúp…
cảm ơn thầy!
Võ Văn Hải said
Sao bạn lại chọn RMI mà không nghĩ đến WebService? Tôi khuyên bạn nên dùng WS hoặc nếu muốn bạn có thể sử dụng EJB.
Nguyen said
Chào Thầy, em đang là sinh viên. Em đang làm simulation trên cơ sở dữ liệu của 3 Java classes. Khi simulation, em lấy kết quả qua Cửa sổ Output. Hiện tại, em rất muốn chạy simulation khoảng 15000 lần và muốn dữ liệu sẽ được tự động nhập vào một Table. Nhưng em không làm được, hiện tại em đang sử dụng Netbeans 6.9. Mong Thầy chỉ dẫn dùm em.
Phạm Minh Công said
em đang làm báo cáo về tính năng Multiple Open Result Set Objects ở jdbc 3.0, nhưng em không hiểu lắm vì sao ở bản jdbc 2.0 lại không dùng nhiều đối tượng resutlsets được, và khi nào thì nên dùng nhiều resultset, thầy có thể cho ví dụ giúp em được không, em chưa hiểu sẽ ưu điểm và nhược điểm thế nào khi dùng nhiều đối tượng resutl set, em có tìm nhiều tài liệu, nhưng thực sự chưa hiểu, mong thầy giúp em, cám ơn thầy
Võ Văn Hải said
Là như thế này: Giả sử em có 1 store procedure (sp), mà cái sp này liên quan đến nhiều bảng và việc gọi cái sp này trả về nhiều hơn một result set. Ví dụ ta có 1 sp với tên employeeInfo mà nó có thể trả về các resultset sau:
Với JDBC 2.0, việc thực thi là tuần tự và sinh ra 3 resultset độc lập. Giả sử ứng dụng muốn lấy danh sách các dự án mà nhân viên tham gia trước, có nghĩa là việc thực thi sẽ là lấy cái thứ 1, 2 rồi hủy rồi mới đến cái thứ 3. Như vậy rất là bất tiện. JDBC không cung cấp cơ chế truy xuất đồng thời.
Với JDBC thì vấn đề này rất đơn giản bởi có cung cấp tính chất đồng thời cho việc truy xuất các resultset như ví dụ trên. Vi dụ:
// get ready to call the employeeInfo procedure
CallableStatement cstmt = conn.prepareCall (“{call employeeInfo (?)}”);
Cstmt.setInt (1,71164);
// bind parameter info for employee with id 71164
Boolean RetCode = Cstmt.execute ();
// call the procedure
// For simplicity we’ll bypass logic for the procedure possibly returning update counts
// first result set will be discarded … materialize it and immediately move to the second
ResultSet DiscardRS = cstmt.getResultSet();
// materialize first result set
ResultSet EmpListRS = cstmt.getMoreResults ();
// by default, close DiscardRS
// the 2nd result set: list of employees that report to 71164 is now available
ResultSet ProjectsRS = cstmt.getMoreResults (KEEP_CURRENT_RESULT);
// the 3rd result set is now materialized and we can simultaneously operate on both
// the employee list and the project list
Phạm Minh Công said
cám ơn thầy đã cho em ý kiến về jdbc 3, nhưng em chưa hiểu, ở jdbc 2.0, với 3 bộ kết quả đó, mình muốn lấy bộ kết quả thứ 3 thì làm sao, không lẽ gọi hàm .next(); mãi cho tới khi qua 2 bộ kia ạ, em chưa hiểu lắm, mong thầy giúp
Võ Văn Hải said
phải bỏ qua 2 resultset đầu chứ không phải .next() là chuyển mẫu tin.
Phạm Minh Công said
làm sao bỏ qua được hả thầy, em có đọc thấy result có mấy hàm như next(),preview(),first(),last(),…nhưng không chuyển được, thầy có thể mô tả sơ cách nó chuyển không ạ, xin lỗi vì làm phiền thầy nhiều, có lẽ kiến thức của em còn non quá
Võ Văn Hải said
Trong code trên tôi đã ví dụ rồi, em dung 1 CallableStatement để thực thi 1 sp, xong để lấy rs, ta gọi cs.getResultSet();Để lấy rs tiếp ta gọi cs.getMoreResults();
Phạm Minh Công said
vậy jdbc 3.0 cũng đâu thể truy cập liền tới bộ kết quả thứ 3, nó vẫn phải đi qua 2 bộ kia, nhưng jdbc 3 có hỗ trợ giữ lại những rs trước đó, em có viết code test thử:
package test;
import java.sql.*;
public class Main {
public static void main(String[] args) {
try {
String sql1 = “select Lastname,FirstName from dbo.Employees;”+”select Title from dbo.Employees”;
Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
Connection con = DriverManager.getConnection(“jdbc:sqlserver://localhost;databaseName=Northwind;user=sa;password=123456″);
Statement stmt = con.createStatement();
boolean result = stmt.execute(sql1);
ResultSet rs = stmt.getResultSet();
if(result)
{
while(rs.next())
{
System.out.println(“Last Name:”+rs.getString(“LastName”)+” First Name:”+rs.getString(“FirstName”));
}
}
result = stmt.getMoreResults(Statement.KEEP_CURRENT_RESULT);
if (result)
{
ResultSet rs1 = stmt.getResultSet();
while(rs1.next())
{
System.out.println(“Title: “+rs1.getString(“Title”));
}
}
rs.first();
System.out.println(rs.getString(“LastName”));
} catch (Exception ex) {
System.out.print(ex);
}
}
}
Kết quả em chạy ra là :
run:
Last Name:Davolio First Name:Nancy
Last Name:Fuller First Name:Andrew
Last Name:Leverling First Name:Janet
Last Name:Peacock First Name:Margaret
Last Name:Buchanan First Name:Steven
Last Name:Suyama First Name:Michael
Last Name:King First Name:Robert
Last Name:Callahan First Name:Laura
Last Name:Dodsworth First Name:Anne
com.microsoft.sqlserver.jdbc.SQLServerException: This operation is not supported.BUILD SUCCESSFUL (total time: 3 seconds)
Nó không cho giữ lại cái rs khi em gọi rs1, theo exception thì nó không hỗ trợ cho KEEP_CURRENT_RESULT, khi em để CLOSE_CURRENT_RESULT thì chạy được cái rs1 nhưng cái rs kia bị close, thông tin từ trang http://msdn.microsoft.com/en-us/library/ms378508(v=sql.90).aspx, nói là KEEP_CURRENT_RESULT không hỗ trợ bởi jdbc driver, nhưng tài liệu nào nói về jdbc 3.0 cũng thấy là dùng được KEEP_CURRENT_RESULT,em không hiểu vấn đề này lắm, mong thầy giúp(em tải jdbc driver 3.0 từ microsoft và import vào project của em ở trong thư mục library)
Nguyễn Hoàn said
em có bài này mong các bác xem cho em và cho em xin đoạn code đc ko ạ
Lập trình phần mềm chát giữa hai máy tính nối mạng với nhau với yêu cầu sau:
1. Sử dụng kĩ thuật lập trình hướng đối tượng.
2. Cho phép người sử dụng nhập vào tên nick.
3. Hiện thị đan xen nội dung mà hai chương trình trên hai máy gửi cho nhau.
4. Hỗ trợ các dòng thông điệp bằng tiếng Việt trên bảng mã Unicode.
5. Cho phép lưu lại nội dung các lần chát.
pthanh said
Thầy ơi cho em hỏi về các phương thức của ResultSetMetaData.
e tìm hiểu thì thấy có 21 phương thức nhưng em chưa hiểu rõ lắm chức năng từng phương thức. Vì là bản dịch ra từ tiếng anh nên rất mơ hồ. Thầy giải thích giúp em gấp nha thầy. Em co demo hết rồi nhưng có một số phương thức em không hiểu.
Đây là các phương thức em chưa hiểu:
1. GetCatalogName(int column)
4. GetScale
5. GetSchemaName
6. isAutoIncrement
7. isCaseSentitive
8. isDefinitelyWritable
9. isReadOnly
10. isSeachable
11. isSigned
12. NullableUnknown
Thầy phân biệt dùm em các phương thức này, em demo ra kết quả tương tự:
1. Phân biệt ResultSet va ResultSetMetaData
2. Phân biệt GetColumnLabel va GetColumnName
3. Phân biệt GetColumnDisplaySize va GetColumnPrecision
Võ Văn Hải said
Em chịu khó đọc tiếng Anh đi. Link của lớp ResultSetMetaData ở đây.
- ResultSet là 1 đối tượng chứa tập các records và cả cấu trúc dùng để chứa các records này (ResulSetMetaData).
- ColumnLabel là chỉ cái “caption”. ví như trong msaccess thì ColumnName là tên của field nhưng ColumnLabel là cái hiện ra cho user thấy khi mở bảng.
- GetColumnDisplaySize chỉ chiều rộng tối đa của cột, và không có phương thức nào có tên GetColumnPrecision cả. Chỉ có getPrecision(int) trả về độ rộng của 1 cột
phuc thanh said
Em đọc lại hơn chục lần rồi đó thầy.Dịch ra mơ hồ lắm.
Thầy có thể nói ý nghĩa của các phương thức đó không. Khi nào mình sử dụng nó trong thực tiễn. ví dụ như trong ứng dụng quản lý.
phuonghong said
Em chào thầy. Thầy cho e hỏi về các phương thức trong ResultSetMetaData ạ!
E không rõ ý nghĩa việc sử dụng các phương thức isSeachable, isReadOnly, isSigned, NullableUnknown, getScale ví dụ sử dụng trong database QuanLyDuAn, mong thầy giúp e ạ!
phuc thanh said
khi em chạy demo cho 2 phương thức getDisplaySize va getPrecisiont với bảng sau:
create table NhanVien
(
MaNV char(9) primary key,
HoNV nchar(15),
TenLot nchar(15),
TenNV nchar(15) not null,
NgaySinh datetime,
DiaChi nchar(30),
Phai nchar(3),
Luong float,
MaNQL char(9) null,
Phong int not null
);
GO
Thì ra kết quả thế này:
Kết quả của getPrecision:
Cot 1 la 9
Cot 2 la 15
Cot 3 la 15
Cot 4 la 15
Cot 5 la 23
Cot 6 la 30
Cot 7 la 3
Cot 8 la 15
Cot 9 la 9
Cot 10 la 10
Kết quả của getDisplaySize:
Cot 1 la 9
Cot 2 la 15
Cot 3 la 15
Cot 4 la 15
Cot 5 la 23
Cot 6 la 30
Cot 7 la 3
Cot 8 la 22
Cot 9 la 9
Cot 10 la 11
pttkieu said
Emm chào thầy! Thầy cho e hỏi trong Netbeans làm sao hiển thị thông báo lên JtextArea
ví dụ e có câu thông báo :
System.out.println(” Kết nối thành công…..”);
Muốn chuyển project trong Netbeans chỉ cần chạy exe4j là được hả thầy?
Mong thầy giúp e ạ!
tranduykhiem said
Anh ơi cho em hỏi cách chèn hình vào JTable, mà dữ liệu của Table được đọc từ bảng NhanVien(Ma,HoTen,NgaySinh,HinhAnh). Nhưng Field HinhAnh là chuỗi, chứa tên hình .
Em muốn hiển thị nó lên Table thì làm sao ạ!
Võ Văn Hải said
Chịu khó tìm trong blog trước khi hỏi nhé bạn. link đây: http://vovanhai.wordpress.com/java/l%E1%BA%ADp-trinh-java-nang-cao/jdbc-java-database-connectivity/d%E1%BB%8Dc-hinh-t%E1%BB%AB-ms-sql-server-r%E1%BB%93i-hi%E1%BB%83n-th%E1%BB%8B-len-jtable/
Naruto said
thầy ơi cho e hỏi về giao diện của deposit, withdraw, và transfer giống và khác nhau ở điểm nào ạ! nếu có xin thầy nói cho e biết! cám ơn thầy nhiều !
Võ Văn Hải said
Các thao tác của nghiệp vụ ngân hàng theo đúng như chức năng của nó mà em làm giao diện. Em xài thẻ ATM thế nào?
sk9a1r said
thầy ơi.trường em bắt nghiên cứu java bean mà không có giáo viên hướng dẫn.Hiện tại em đang làm đề án viết game Trúc Xanh bằng javabean.Nhưng mà em tìm trên mạng thì chỉ có JavaBean kết hợp với web thôi.Thầy chỉ hướng phân tích giúp em với.Em cần phải tách lớp bean ra để gì trong.Với lại em đang lập trình giao diện cho chương trình.Đến lúc tạo 1 mảng button ,làm cách nào để chèn hình vào button vậy thầy.Cám ơn thầy !!!!
Võ Văn Hải said
Java bean không chỉ làm với web đâu bạn. bạn xem lại nhé. Còn đưa hình vào button thì bạn làm như sau:
yourbutton.setIcon(new ImageIcon(“đường dẫn đến file GIF/PNG”));
sk9a1r said
Thầy ơi JavaBean mà dùng cho Application thì tiếng anh gọi nó là gì vậy thầy .Với lại em muốn hỏi thêm.MÌnh tạo 1 mảng button xong đưa các hình random vào đó thì làm sao thầy.Với lại cách đánh dấu các hình chỉ được hiện ra 2 lân thôi thì làm sao thầy
NgoToi said
Bạn nào dùng Netbeans 7.0 chưa nhỉ ? Mình mới down Netbeans 7.0 về, nó tự động cài đặt luôn, mà mình thắc mắc ko biết đây là bản dùng thử ko nữa, nếu là bản dùng thử thì sau 1 thời gian là nó lại bắt nhập key, mình đoán thế. Vậy bạn nào đã dùng qua rồi thì tư vấn cho mình biết nhé, nếu là bản dùng thử, thì bạn nó có key cho mình xin luôn nhé. Thanks các bạn nhiều.
Võ Văn Hải said
Đầy là IDE miễn phí. Bạn an tâm không có key hay thứ gì khác.
NgoToi said
Thầy ơi cho em hỏi. Cái JSP và Servlet là nó thuộc Java nâng cao hay là nó thuộc J2EE, em thấy nhiều người nói là thuộc J2EE mà tại sao trong cái mục thầy để Java nâng cao thì có 2 cái đó, còn trong J2EE lại ko có ?
JSP và Servlet là mình nên học JSP trước đúng ko thầy ?
Nghe nói học JSP là bắt buộc cài JRun, Vậy JRun nó có tác dụng gì cho JSP ?
Nếu học JSP thì bắt buộc có JRun, thì Thầy hoặc bạn nào có JRun 4.0 + key thì send cho mình luôn nhé.
Thanks Thầy và các bạn nhiều.
Võ Văn Hải said
Em đặt câu hỏi tôi potay.com.
Servlet/JSP là 1 công nghệ thuộc JavaEE specifications. Còn khi tôi post bài cho sinh viên tôi thì phần này nằm trong môn Advaced Java nên tôi để đấy.
Học Servlet trước em à. JSP là Servlet+HTML. Khi JSP được thực thi trên 1 WebServer thì nó được build thành servlet trước khi gửi cho client.
JRun là 1 webserver. Ai bắt buộc hải dùng nó. Ngày nay người ta dùng Tomcat nhiều hơn. Tomcat (http://tomcat.apache.org/) miễn phí, nhẹ,…
Bạn sẽ phải nghiên cứu nhiều hơn!
NgoToi said
Thanks thầy nhiều, e hiểu rồi.
Nguyễn Thị Vân said
Em chào thầy.Thầy có thể cho em hỏi là cách làm report ấy ạ.em làm 1 cái quản lý nhân sự.giờ em làm báo cáo.em dùng i-net Designer để làm thành 1 file html.giờ làm sao để gọi file html đó chạy trong java hả thầy.
[Ai9r]-Knight said
Thầy ơi giúp em phân biệt giữa JDBC với ODBC với .Em đọc sách thấy JDBC phải xài driver riêng của từng hãng.Nhưng nếu Window mà muốn xài ODBC MySql thì cũng phải cài thêm ODBC của MySql vào,em đọc thêm thì cũng thấy có JDBC cho MySql vậy điểm khác nhau giữa hai cái này là gì vậy thầy.Ích lợi sử dụng của nó ra sao với lại trong trường hợp nào mình nên xài loại nào phù hợp.Cám ơn thầy
Võ Văn Hải said
ODBC là công nghệ của microsoft nhằm tạo thuận lời cho lập trình viên làm việc với nhiều hệ quản trị cơ sở dữ liệu. LTV chỉ cần làm với ODBC, phần việc còn lại ODBC sẽ làm việc với cơ sở dữ liệu tương ứng. JDBC là 1 công nghệ cho phép java kết nối với các hệ quản trị cơ sở dữ liệu. Mỗi DBMS cần phải có 1 driver riêng. Tuy nhiên ta có thể dùng JDBC thông qua ODBC để kết nối đến cơ sở dữ liệu. Cách này gọi là driver loại 1, loại này chậm. Loại 4 là loại nhanh nhất (có driver riêng cho từng DBMS).
khanhtrung said
thay oi cho e theo lam de tu cua thay dc khong thay e rat la muon hoc hoi
drquang said
Cho em hỏi về bài 2 thread đồng bộ nhau, đề bài như sau:
Create three dasses: Storage, Counter and Printer. The Storage class should store an
integer. The Counter class should create a thread that starts counting from 0 (0, 1, 2.
3 …) and stores each value in the Storage class. The Printer class should create thread that keeps
reading the value in the Storage class and printing it.
Create a program that creates an instance of the Storage class, and sets up a Counter and a Printer
object to operate on it.
e viết 4 class như sau :
package bai12;
public class Storage {
int value;
boolean busy = false;
synchronized int get() {
if(!busy)
try {
wait();
} catch (InterruptedException e) {
System.out.println(“get() interupted.\n” + e.toString());
}
//System.out.println(“get : ” + value);
notify(); // thong bao da xong, tra lai doi tuong dang monitor
return value;
}
synchronized void put(int value) {
if(busy)
try {
wait();
} catch (InterruptedException e) {
System.out.println(“put() interupted.\n” + e.toString());
}
this.value = value;
busy = true;
//System.out.println(“set : ” + value);
notify();
}
}
package bai12;
public class Counter implements Runnable {
int count = 10;
Storage storage;
public Counter(Storage storage) {
this.storage = storage;
new Thread(this, “Counter”).start();
}
public void run() {
for (int i = 0; i < count; i++) {
// try {
this.storage.put(i);
System.out.println(Thread.currentThread().getName()
+ " put " + i + " to Storage");
// Thread.currentThread().sleep (1000);
// } catch (InterruptedException e) {
// System.out.println ("Thread interrupted");
// }
}
System.out.println("counter done.");
}
}
package bai12;
public class Printer extends Thread {
int count = 10;
Storage storage;
public Printer(Storage storage) {
this.storage = storage;
new Thread(this, "Printer").start();
}
public void run() {
for (int i = 0; i < count; i++) {
// try {
System.out.println(Thread.currentThread().getName()
+ " get " + storage.get() + " from Storage");
// Thread.currentThread().sleep (1000);
// } catch (InterruptedException e) {
// System.out.println ("Thread interrupted");
// }
System.out.println("————————-");
}
System.out.println("printer done.");
}
}
package bai12;
public class test {
public static void main(String[] args) {
Storage s = new Storage();
new Counter(s);
new Printer(s);
}
}
Yêu cầu của bài toán như sau:
+ class Counter lưu tuần tự 10 số int từ 0-9 vào vào class Storage
(class Storage chỉ lưu 1 lần được 1 giá trị)
+ sau khi class Counter lưu xong 1 số int vào class Storage,
thì thông báo cho class Printer lấy giá trị này từ class Storage và in ra,
class Printer in xong thì lại báo cho class Counter lưu giá trị kế tiếp
Tóm lại đây là 1 quá trình tuần tự có lặp lại
Em bị lỗi như sau:
1. có lúc class Counter lưu 2 giá trị xuống class Storage hay Printer đọc 1 giá trị 2 lần,
thay vì lưu 1 giá trị vào chờ cho Printer đọc xong, mới lưu tiếp ?
Counter put 0 to Storage
Printer get 0 from Storage
————————-
Printer get 0 from Storage
————————-
Printer get 0 from Storage
————————-
Printer get 0 from Storage
————————-
Printer get 0 from Storage
————————-
Printer get 0 from Storage
————————-
Printer get 0 from Storage
————————-
Printer get 0 from Storage
————————-
Printer get 0 from Storage
————————-
Printer get 0 from Storage
————————-
printer done.
Counter put 1 to Storage
2. có lúc Counter không lưu đủ 10 giá trị từ 0-9 xuống Storage, kết quả là Printer cứ chờ Counter lưu gt mới nên chương trình bị đứng luôn ?
Counter put 0 to Storage
Printer get 0 from Storage
————————-
Counter put 1 to Storage
Printer get 0 from Storage
————————-
Counter put 2 to Storage
Printer get 1 from Storage
————————-
Printer get 2 from Storage
————————-
Printer get 2 from Storage
————————-
Printer get 2 from Storage
————————-
Printer get 2 from Storage
————————-
Printer get 2 from Storage
————————-
Printer get 2 from Storage
————————-
Printer get 2 from Storage
————————-
printer done.
Counter put 3 to Storage
Em dùng tool eclipse.
Võ Văn Hải said
khó trả lời. Mình rất bận nên cũng rất khó để có nhiều thời gian. Nhưng bạn có thể hỏi và mình trả lời cũng được mà.
Minh Hai said
Chào thầy!
Thầy có thể hướng dẫn em viết 1 ứng dụng sử dụng swing và databinding là như thế nào không vậy thầy.
cám ơn thầy nhiều.
drquang said
e muốn hỏi là tại sao code trên làm việc không ổn định ???
e muốn là thread Counter lưu 1 số vào Storage xong rùi thì thread Printer mới lấy giá trị trong Storage rồi in ra.
Nhưng e lại thấy đôi khi Printer không chờ cho Counter lưu giá trị mà lại in giá trị trước đó (in 2 lần giống nhau) ???
bui van hoang said
Em thầy.Thầy ơi sao em kết nối CSDL tới hai bảng cùng một ResultSet mà nó báo lỗi thầy ơi.
thầy giúp em với
em viết kết nối như sau:
String url = “jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=DuLieu\\QLHangHoa.mdb”;
con=DriverManager.getConnection(url,”",”");
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(“SELECT * FROM TblDanhMucHang,TblLoaiHang”);
Võ Văn Hải said
Em có điều kiện gì (join) nối 2 bảng chứ không là lỗi. Còn em vẫn muốn lấy 2 bảng, em nên dùng 2 resultset.
MIT said
Thày ơi cho em hỏi nha !
Mỗi khi em cài đặt game trên điện thoại di động đều không được, nó hiện ra 2 file là file.jad và file.jar.
Có phải là điện thoại của em chưa cài java phải không thầy ???
Nếu muôn cài thì phải làm thế nào ạ ? Cài có dễ không thầy ?
MIT said
Ý quên !!!
Em xin cám ơn thày nha !!!
mai said
em đang sừ dụng JDateChooser, em ko thể lấy ngày mà chọn từ JdateChooser được.Anh có thể hướng dẫn em được ko ạ?
Võ Văn Hải said
Coi thử dtdd của em có hỗ trợ java không. Dem ra tiệm người ta cài cho.
lala said
em chào thầy !
em có một lỗi nhưng không biết sửa thế nào.doạn code của em bị lỗi ở
public class NewJFrame extends javax.swing.JFrame
trong khi cho đoạn code đó chạy trên máy khác thì ko sao .
thầy giúp em với a.
BaoIT said
Xin thầy hướng dẫn em cách kết nối 1 chương trình java với máy quét mã vạch.
Nếu thầy bận quá thì chỉ cần nhận sự kiện Và xuất ra chuổi String máy trả về là được.
Vì đề tài em chỉ yêu cầu như thế.
Nhưng em hy vọng có hướng để nghiên cứu sâu hơn làm tư liệu đi làm.
Xin thầy giúp em.
Em cám ơn thầy.
tranhuudat said
thầy ơi? cho em hỏi muốn lưu trữ dữ liệu trong access thi dùng câu lệnh gi trong java .thay vì mình lưu trong sql. khi mình click vào button Insert,Update,Delete thi trong access thay đổi theo.
CDTH11K Phần Mềm said
Thưa thầy cho em hỏi là mình không thể hiện thị tiếng việt từ Database Access 2003 lê Java phải không thầy? Vậy dùng Access 2007 – 2010 có được không thầy. Máy em cài Visual Studio 2010 xong là không thề cài được SQL Server 2005 hoặc 2008 nữa. Cài vào thì mở SQL Server lên lại không thấy server nào đề kết nối. Nên Eclipse không dùng được SQL Server nên em đành dùng Access. Em thì không thể cài lại máy vì mất rất nhiều thời gian. Mong thầy còn cách nào khác giúp em? MySQL thì em không sử dụng rành nên không dám đưa vào sử dụng.
Võ Văn Hải said
Câu lệnh như nhau. Chỉ khác chuỗi kết nối.
Tùng said
chào thầy. em đang làm một JPA project về quản lý bến xe trong java, nhưng em không biết tạo những báo cáo và thống kê trong JPA project như thế nào, mong thầy chỉ em được không ạh, nếu được xin thầy vui lòng gửi vào email của em: tung_nguyen_83@yahoo.com
cảm ơn thầy
NGuyễn Hùng Huyền said
Hi Thầy Hải!
Thầy cho em hỏi về cách làm game trong java, cụ thể là như sau: em viết lại game Heart (của Microsoft) như hỗ trợ 4 người chơi quan Mạng Lan.Em hỏi Thầy các mình truyền nhận giữa các client với nhau như thế nào, Thầy có thể demo hay cho e 1 đoạn code hỗ trợ về cơ chế truyền giữa các quân Bài đó như thế nào ko ạh.Em cảm ơn Thầy mong đc sự chỉ dẫn cụ thể từ Thầy, em xin cảm ơn Thầy! Chúc Thầy vui và nhiều suc khỏe
Lê Văn Thiện said
Chào Thầy,
Thưa thầy cho em hỏi : Trang web được viết bằng form JDK, phải đăng nhập mới vào được trang này (em đã có user và pass). Bây giờ em muốn lấy nội dung của trang này tự động, ví dụ như 10 phút/lần và đưa vào database của em thì phải làm sao ạ ? Em chỉ biết về ASP.NET, còn cái này em chưa biết gì hết. Mong thầy giúp em. Rất cảm ơn thẩy nhiều.
Thầy trả lời trên đây hoặc mail của em là : lv.thien@yahoo.com. Mong tin thầy nhiều.
VietHung said
Dear,thầy Hải
Thanks thầy nhiều,nhờ blog của Thầy,em tiến bộ rất nhiều.
Em cần viết chương trình nhập dữ liệu file là cấu trúc của các enzym từ database: http://www.ebi.ac.uk/thornton-srv/databases/CSA/.Dữ liệu là những file,mỗi file có code riêng của nó(chẳng hạn: 1pgs1),em phải bắt đầu học từ đâu,cụ thể trên blog của thầy là ở phần nào.Nhờ thầy chỉ điểm,nếu không phiền thầy cho em xin một vài code làm mẫu.
Chúc Thầy vui,khỏe.
Lê Văn Thiện said
Xin chào anh Hải,
Vui lòng cho em hỏi làm thế nào để lấy thông tin trên một applet của java đang chạy phía client ? Ví dụ như lấy nội dung của trang applet đó và chuyển vào database của mình ?
Cảm ơn anh nhiều (bữa trước em đã hỏi nhưng chưa thấy anh trả lời)
Võ Văn Hải said
Thì applet khi chạy phải gửi dữ liệu lên thì mình lấy được bình thường chứ nó không gửi lên thì sao mà lấy.
Sorry bạn. dạo này mình chuẩn bị bảo vệ luận văn TS nên bận lắm.
Võ Văn Hải said
Cái này thì theo từng cấu trúc mà học thôi. Hay nhất là chuyển dạng biểu diễn thành XML(thiên hạ đã dùng lâu rồi, nó có tên là CML) rồi đọc nó dùng DOM. Bạn xem thêm ở phần dùng DOM để hiểu hoặc tìm 1 API mà lập trình, cái này có rất nhiều trên mạng.
Võ Văn Hải said
10 phút 1 lần thì đơn giản nhất là dùng cái Timer, cho cái thuộc tính interval của nó =10*60*60*1000. trong sự kiện tick viết code lấy dữ liệu và cập nhật vào cơ sở dữ liệu.
Võ Văn Hải said
Bạn có thể dùng Socket để truyền dữ liệu hoặc dùng RMI để truyền. Tạo đối tượng quân bài rồi 1 tập các quân bài và truyền.
Võ Văn Hải said
Dùng iReport hoặc BIRT để làm báo cáo sau đó gọi nó trên ứng dụng của em.
Ân said
Thưa thầy, em đang viết 1 ứng dụng xoay ảnh 90 độ, 180 độ và 270 độ, thầy có thể cho em demo về ứng dụng này được ko ạ
cảm ơn thầy nhiều
Võ Văn Hải said
Hồi trước tôi thấy đâu đó trên internet mà quên mất cái link gốc, chỉ còn đoạn code này. Bạn xem nhé! Link download
Nguyen~Thi~Hue said
Em chào Thầy!
Thầy ơi,em là sinh viên trường ngoài. Em mới học môn java nên em không hiểu rõ em mong thầy có thể chỉ cho em được không ah?
1. Cấu hình kết nối CSDL ra file XML {Sinh viên tự tổ chức cấu trúc file}
2. Các câu truy vấn SQL ra file Text {File text sinh viên tự tổ chức cấu trúc}
3. Các Store Procedure ra file .properties {Có thể google java readfile properties để hiểu
thêm về yêu cầu 3}
4. Customize Model cho JTable
Thầy ơi,Thầy có thể cho em ví dụ hay demo em tham khảo có được không ah?
Email của em: nthuekhtn251288@gmail.com
Em cám ơn Thầy nhiều!
Chúc Thầy vui!
Võ Văn Hải said
1. cấu trúc xml có thể gợi ý như sau:
cac yêu cầu còn lại khá dễ.
Nguyen~Thi~Hue said
Em cám ơn Thầy nhiều!
Chúc Thầy sức khỏe!
quangkhai1289 said
Thầy ơi!E muốn mã hóa pass word để lưu xuống csdl thì phải làm như thế nào thầy?
khongnguyen said
việc load dữ liệu từ jtable vào csdl sql server em đã làm được,còn việc nhập dữ liệu từ jtable rồi đưa dữ liệu vừa nhập vào csdl(giả sử em có 2 cột mssv,diem).nhờ thầy chỉ giúp,em mò nhiều rồi mà chưa ra
TUẤN ANH said
Em chào thầy!
Em đang tìm hiểu về Spring 3 và MyBatics . Thầy có tài liệu tiếng việt phần này không ạ
Nếu có thầy cho em xin tài liệu liên quan! thầy send giúp em qua gmail này.
gmail của em là: anhhus@gmail.com
khongnguyen said
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* nhapdiem2.java
*
* Created on Aug 19, 2011, 12:00:06 PM
*/
package thuthoi;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author zxc123
*/
public class nhapdiem2 extends javax.swing.JDialog {
/** Creates new form nhapdiem2 */
Connection con;
Statement st;
public nhapdiem2(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
try{
Class.forName(“sun.jbdc.odbc.JdbcOdbcDriver”);
con=DriverManager.getConnection(“jdbc:odbc:QLD”,”sa”,”123456″);
st=con.createStatement();
} catch (SQLException ex) {
Logger.getLogger(nhapdiem2.class.getName()).log(Level.SEVERE, null, ex);
}catch(ClassNotFoundException e){
e.printStackTrace();
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings(“unchecked”)
//
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jtb_bangdiem = new javax.swing.JTable();
jbt_ok = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jtb_bangdiem.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null}
},
new String [] {
“mssv”, “nhập điểm”
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
});
jScrollPane1.setViewportView(jtb_bangdiem);
jbt_ok.setText(“ok”);
jbt_ok.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbt_okActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap(15, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 436, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGap(173, 173, 173)
.addComponent(jbt_ok, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(183, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 281, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jbt_ok)
.addContainerGap(29, Short.MAX_VALUE))
);
pack();
}//
private void jbt_okActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int sodong= jtb_bangdiem.getRowCount();
String mssv;
String diem;
//int s=0;
int dem=0;
while(dem<=sodong)
try {
mssv=(String) jtb_bangdiem.getValueAt(dem++,1);
diem=(String) jtb_bangdiem.getValueAt(dem++,2);
int s=st.executeUpdate("insert into bangdiem values ('"+mssv+"','"+diem+"')");
} catch (SQLException ex) {
Logger.getLogger(nhapdiem2.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if (“Nimbus”.equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(nhapdiem2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(nhapdiem2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(nhapdiem2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(nhapdiem2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//
/* Create and display the dialog */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
nhapdiem2 dialog = new nhapdiem2(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}
// Variables declaration – do not modify
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton jbt_ok;
private javax.swing.JTable jtb_bangdiem;
// End of variables declaration
}
em viết thế này mà vẫn không đưa dữ liệu vào csdl được,nhờ thầy sữa giúp
khongnguyen said
em có csdl có 2 cột mssv và diem
VietHung said
Nhờ Thầy chỉ cho em code để download file từ link : http://www.ebi.ac.uk/thornton-srv/databases/CSA/ vào thư mục C://java/bin của máy tính.
Mong thầy help em sớm,em post câu hỏi nhiều lần,chờ câu hỏi Thầy lâu rồi. Cám ơn Thầy
Võ Văn Hải said
Code sau download 1 file từ 1 URL về máy
package test; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.URL; public class FileDownloader{ /** * Download file từ 1 url nào đó * @param downloadURL là url của file cần download * @param savingPath là đường dẫn và tên file cần lưu * @throws IOException */ public void download(String downloadURL,String savingPath) throws IOException{ BufferedInputStream in = new BufferedInputStream(new URL(downloadURL).openStream()); FileOutputStream fos = new FileOutputStream(savingPath); java.io.BufferedOutputStream bout = new BufferedOutputStream(fos,1024); byte[] data = new byte[1024]; int x=0; while((x=in.read(data,0,1024))>=0){ bout.write(data,0,x); } bout.close(); in.close(); } public static void main(String[] args) throws Exception{ FileDownloader d=new FileDownloader(); d.download("http://www.ebi.ac.uk/thornton-srv/databases/cgi-bin/CSA/CSA_Download.pl", "C:/CSA_Download.pl"); System.out.println("OK"); } }Võ Văn Hải said
sorry. thầy không có tài liệu tiếng Việt về phần này
Võ Văn Hải said
Em xem bài trong blog có làm đến việc này.
TUẤN ANH said
Thầy ơi!Cho em hỏi
Làm thế nào để con trỏ chuột focus đến ô nhập liệu đầu tiên và nếu nhập sai thì con trỏ chuột cũng phải focus đến ô bị sai.?
Giống như khi đăng nhập trang me.zing.vn y !
VietHung said
Thưa thầy: em dùng absolute URL như sau:
d.download(“http://www.pdb.org/pdb/explore/explore.do?structureId=1YVS”,”C:/Java/bin/1yvs.pdb”);
kết quả: output file là một trang văn bản XML của web đó,chứ không phải file 1YVS.pdb nằm ở cái link download bên phải .
Nhờ thầy help
Võ Văn Hải said
tfYourName.requestFocus();
VietHung said
Sau khi em run code của thầy, kết quả không down được file mà down được trang html page ,chứa cái file đó.Em phải sữa code lại thế nào để ,để tương tác với cái trang web ,down được cái file đó :
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
public class FileDownloader{
public void download(String downloadURL,String savingPath) throws IOException{
BufferedInputStream in = new BufferedInputStream(new
URL(downloadURL).openStream());
FileOutputStream fos = new FileOutputStream(savingPath);
java.io.BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
byte[] data = new byte[1024];
int x=0;
while((x=in.read(data,0,1024))>=0){
bout.write(data,0,x);
}
bout.close();
in.close();
}
public static void main(String[] args) throws Exception{
FileDownloader d=new FileDownloader();
d.download
(“http://www.pdb.org/pdb/explore/explore.do?structureId=1YVS”,”output_file.pdb”);
System.out.println(“OK”);
}
}
VietHung said
Thay oi,em tim ra loi giai roi:cai link do la cua trang web chu khong phai cua file can download
em phai click chuot phai vao cai file cua em => copy shortcut=>paste shotcut do vao DownloadUrl => run code binh thuong.Em post len de cac ban khac tham khao
partynol said
Chào thầy .
) nhưng cũng dừng ở mức là tạo ra được 1 Client kết nối tới Server và dùng FTP Protocol download 1file từ server về.
Em là sv trường Khoa Học Tự Nhiên. Hiện e đang học lớp Hoàn Chỉnh ĐH.
Hồi học CĐ e chưa đc học môn Java. Giờ môn Mạng Máy Tính yêu cầu em làm 1 đồ án là ứng dụng socket programing trong Java để viết 1 chương trình chia sẻ file ứng dụng cả 2 mô hình: Client-Server và P2P (gần giống chương trình Bittorent).
Em đã google tìm hiểu nửa tháng nay (chủ yếu là đọc trong blog của thầy
Hiện em đang “bí” về phần coding để thiết kế ra 1 “Bittorent Protocol” (e gọi theo Wikipedia).
Mong thầy chỉ giúp e 1 hướng đi để giải quyết vấn đề này.
Nếu có tài liệu tham khảo xin thầy send wa địa chỉ mail: partynol@yahoo.com.
Mong được hồi âm của thầy.
Em xin cảm ơn thầy trước.
Chúc sức khỏe thầy và mọi người trong VoVanHai’s blog.
thủy said
viết như thế này thì phải làm thế nào ạ?
roll no (textfield)
name (textfield)…
nói chung là các label thẳng hàng như thế ạ?
em mới học cái này mà không biết viết như thế nào cho thẳng hàng như thế được à, mong thầy chỉ dạy ạ!
Nikelvin said
Em chao thay! Em co 1 Jtable thuc hien viec tinh toan luong cho nhan vien. Gia su em dang co 1 gia tri ben trong 1 cell. Bay gio, em muon sua gia tri do. Em muon khi tab (hoac Enter) den cell do va nhap gia tri moi thi gia tri moi se chen ngay len gia tri cu (tuc la Khong phai nhan dup con chuot vao cell do va xoa gia tri cu di moi nhap duoc gia tri moi), giong nhu trong Excel do ah! Em phai lam the nao ah! Em cam on thay.
change0810 said
Em cũng đang làm bài tập lớn về vấn đề chia sẻ file theo kiểu lai giữa client-server và Peer-to-peer. Thầy có tài liệu xin gửi cho em với ạ.
buithean2010@yahoo.com
chúc sức khỏe thầy !
Võ Văn Hải said
Khi ô đang có focus, em nhấn phím F2 để sửa.
Nikelvin said
Em chao thay! Y em la khi o dang co focus, em muon nhap ngay mot gia tri khac vao cell thi gia tri nay phai de len gia tri cu(gia tri cu trong Cell mat di, giong nhu trong Excel) chu khong can phai dua chuot vao trong Cell do thi moi sua duoc ah! Em phai lam the nao ah? Em cam on thay!
hau said
e muon hoi thay ti nay dc ko thay?e dag lam java nang cao ve May ATM,thay co the huong dan code nap tien vao may va truy van phuong an rut tien dcko thay.Cam on thay nhieu
Togo said
Em chào thầy! Thầy cho em hỏi về lập trình socket là khi ta lập trình client/server thì server sẽ tạo ra một socket để lắng nghe và 1 socket để xử lý khi có yêu cầu từ client. Còn client muốn kết nối với server thì thông qua port và địa chỉ ip vậy nếu em muốn tạo kết nối giữa client và client thì tạo socket như thế nào vậy thầy.
Tài liệu môn Java nâng cao và công nghệ phần mềm « Nguyễn Thanh Tuấn said
[...] Môn Java http://vovanhai.wordpress.com/java/l%E1%BA%ADp-trinh-java-nang-cao/ [...]
Ngô Thành Trung said
Xin chào!
Có ai có đoạn code java để lấy giá trị “thứ, ngày, tháng, năm” từ server để hiển thị trên web không??
Cũng xin hỏi thầy Hải luôn??
Nếu thấy có có thể chia sẻ cho em với.
Ngô Thành Trung said
Mong các bạn và thầy phản hồi sớm!
Thank!
VietHung said
Nhờ thầy giúp em design hash function để hash vị trí (x,y,z) thành index , với 2D em hash vi trí (x,y) như sau :
i= (int) (ceil(x/w));// w là độ rộng của bin có thể từ 1 đến 3;
j= (int) (ceil(y/w));
hash function : H(x,y)=|i*378551+j*63689|;
còn với (x,y,z) em không biết làm,nhờ thầy giúp
Võ Văn Hải said
không hiểu bạn hỏi như thế nào ở đây. Server là web server hay time server?
Nếu trong web server thì bạn new Date() là bạn lấy được ngày tháng năm hiện tại rồi.
Ngô Thành Trung said
Muốn lấy giá trị ngày tháng năm của server (time server), lấy các giá trị đó hiển thị trên 1 web server.
Thnk thầy.
Nguyễn Văn Đức said
Thưa thầy. Về phần giao diện trong java. Bây giờ em có 1 ô textfield thì khi thay đổi giá trị phía trong thì khi muốn nhận giá trị mới đó ta phải ấn Enter. Em muốn hỏi thầy là có cách nào khác chỉ cần điền giá trị vào ô là chương trình nhận giá trị mới luôn, ko cần ấn Enter ko ạ.
ps: Em nói khó hiểu quá. Mong thầy thông cảm.
Hoàng Ngọc Thanh said
thầy cho em hỏi làm sao ma viết được tiếng việt ở trong java vậy thầy
em dùng editplus
thanks thầy
minhneo said
import java.rmi.Remote;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
public class BankServer{
public static void main (String[] args) {
try{
// LocateRegistry.createRegistry(8200);
// SGBankImpl SGacc=new SGBankImpl();
// UnicastRemoteObject.exportObject(SGacc,8200);
// Naming.rebind(“SGAccount”,SGacc);
Registry rsg = LocateRegistry.createRegistry(1099);
SGBankImpl SGacc=new SGBankImpl();
Remote objsg = UnicastRemoteObject.exportObject(SGacc,1099);
rsg.bind(“SGAccount”,objsg);
//rsg.unbind(“SGAccount”);
Registry rdn = LocateRegistry.createRegistry(1097);
DNBankImpl DNacc=new DNBankImpl();
Remote objdn = UnicastRemoteObject.exportObject(DNacc,1097);
rdn.rebind(“DNAccount”,objdn);
//rdn.unbind(“DNAccount”);
Registry rhn = LocateRegistry.createRegistry(1095);
HNBankImpl HNacc=new HNBankImpl();
Remote objhn = UnicastRemoteObject.exportObject(HNacc,1095);
rhn.rebind(“HNAccount”,objhn);
//rhn.unbind(“HNAccount”);
// LocateRegistry.createRegistry(1099);
// SGBankImpl SGacc=new SGBankImpl();
// Context ctx =new InitialContext();
// ctx.bind(“rmi://192.168.2.103:1099/SGAccount”,SGacc);
System.out.println (“===============================”);
System.out.println(“Server is running…..”);
System.out.println (“===============================”);
}
catch (Exception ex){
System.out.println (“Error”+ex);
}
}
}
Thầy cho em hỏi nếu em bỏ ra 2 server giữ lại 1 cái và port 1099 thì chạy bình thường, thấy có thể hướng dẫn em chạy trên nhiều port không thầy?
Võ Văn Hải said
Sao lại phải chạy nhiều port nhỉ? Trên port 1099 bạn có thể bound bao nhiêu services mà không được miễn nó không cùng tên thì thôi.
Võ Văn Hải said
Hi! Em quên cái EditPlus đi là vừa rồi. Tốt nhất là viết bằng Eclipse. Còn không nếu muốn gõ theo kiểu đó thì dùng NotePad++ gõ sau đó lưu xuống dạng unicode. Dùng command-line biên dịch thêm cái option -encoding UTF-8 nữa là xong.
Võ Văn Hải said
Em dùng KeyListener cho textfield (gõ chữ nào nhận chữ ấy). Tuy nhiên em cần phải xác định khi nào thì chuỗi nhập kết thúc.
Minhneo said
Registry rdn = LocateRegistry.createRegistry(1097);
Remote objdn = UnicastRemoteObject.exportObject(DNacc,1097);
Tất ca các số này trên 3 cái em để 1099 hết thì có cái đầu tiên chạy thôi thấy ah, cái nào nắm dưới thì nó báo lỗi ExceptionNotBound. Thầy có thể chỉ em sửa lại không ạ, 1 cái thì chạy còn 3 cái thì chỉ 1 cái chạy, em cũng mới tìm hiểu java nên cũng chưa rõ lắm. Cám ơn thầy!
Võ Văn Hải said
bạn có thể bind bao nhiêu cái tùy ý trên 1 registry:
java.rmi.registry.LocateRegistry.createRegistry(1099); Context ctx=new InitialContext(); ctx.bind("rmi:trmi01", obj1); ctx.bind("rmi:rmi02", obj2);Chí Công said
Vấn đề peer to peer!
Chào thầy, trước tiên em chúc thầy sức khỏe, em xin hỏi thầy về vấn đề này:
Trường em, có ra một bài tập môn Mạng Máy Tính thực hiện một chương trình sử dụng mô hình lai giữa server-client và p2p.
Em gặp vấn đề ở chổ không biết cách nào để giao tiếp và truyền dữ liệu giữa các peer với nhau (không thông qua server)…
Thầy có thể hướng dẫn cho em cách nào giao tiếp giữa các peer với nhau được không?
Nếu thầy có tài liệu liên quan đến vấn đề này thì thầy có thể gởi mail cho em được không (mail của em: chicong.2601@gmail.com)
Em cảm ơn thầy rất nhiều!
phong said
thay oi chi dum e liet ke du lieu dang danh sach trong jsp di thay.thay cho e code di
Nguyen Thanh said
Chào mọi người.
Mình có vấn đề này ai biết giúp mình cái với.
Mình đang làm một trang web với jsp và cơ sở dữ liệu là MySql. Người dùng có tài khoản. Khi người dùng đăng nhập thì mình sẽ set account đó là đang đăng nhập dưới database để không ai đăng nhập ở máy khác được nữa, khi người dùng đăng xuất thì sẽ set lại là free. Vấn đề là nếu ng dùng không đăng xuất mà tắt trình duyệt thì mình không biết làm sao để truy cập database để set lại status cho account nên lần sau không đăng nhập được nữa. Vậy ai biết cách bắt sự kiện tắt trình duyệt trong jsp chỉ mình cái với, để khi người dùng tắt trình duyệt thì mình gọi hàm set lại status của account để lần sau vẫn đăng nhập bình thường.
Thanks all.
(p/s: ai biết chỉ mình với, nếu được gủi qua mail cho mình cái với: thanhtrung.xl@gmail.com)
Võ Văn Hải said
quote: “thay oi chi dum e liet ke du lieu dang danh sach trong jsp di thay.thay cho e code di”
Tìm kỹ trong blog này đã có rồi bạn nhé!
ugly said
Thầy ơi ! e đang làm bài tập lớn đánh giá sinh viên.mà không biết cách phân quyền. Thầy hướng dẫn cho e với!
Quý said
Em chào thầy Hải!
Em đang làm BTL về đề tài: Sắp xếp lịch học, ở đây học theo tín chỉ. Em đã tìm hiểu nhưng vẫn chưa tìm ra được thuật toán. Rất mong thầy giúp đỡ,
Em cảm ơn!
minhneo said
Thầy cho em hỏi, em viết socket để tính +,-,*,/. Trong code client có socket=new Socket(“127.0.0.1″,1234) nếu em để vậy thì chạy bình thường ( trên 1 máy ). Nhưng mà nếu em đổi lại chính địa chỉ của máy em là 192.168.1.2 thì không chạy báo lỗi như ở dưới ( chạy cùng trên 1 máy ). Vì em muốn server để máy nào cũng chạy miễn client biết địa chỉ thì kết nối vô thôi. Mong thầy giúp em, cám ơn Thầy!
C:\>java test
java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketI
mpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.ja
va:337)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocket
Impl.java:198)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java
:180)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.(Socket.java:425)
at java.net.Socket.(Socket.java:208)
at test.jButton1ActionPerformed(test.java:88)
at test.access$000(test.java:5)
at test$1.actionPerformed(test.java:40)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:20
18)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
a:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259
)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
istener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832
)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Võ Văn Hải said
Xem ở đây nhé bạn: http://vovanhai.wordpress.com/java/l%e1%ba%adp-trinh-java-nang-cao/networking/l%e1%ba%adp-trinh-socket-t%e1%ba%a1o-%e1%bb%a9ng-d%e1%bb%a5ng-calculator/
xuanliendep said
Chào thầy Hải và mọi người.
Mình có vấn đề này ai biết giúp mình cái với.
Mình đang làm một trang web với jsp và cơ sở dữ liệu là MySql. Người dùng có tài khoản. Khi người dùng đăng nhập thì mình sẽ set account đó là đang đăng nhập dưới database để không ai đăng nhập ở máy khác được nữa, khi người dùng đăng xuất thì sẽ set lại là free. Vấn đề là nếu ng dùng không đăng xuất mà tắt trình duyệt thì mình không biết làm sao để truy cập database để set lại status cho account nên lần sau không đăng nhập được nữa. Vậy ai biết cách bắt sự kiện tắt trình duyệt trong jsp chỉ mình cái với, để khi người dùng tắt trình duyệt thì mình gọi hàm set lại status của account để lần sau vẫn đăng nhập bình thường.
Thanks all.
(p/s: ai biết chỉ mình với, nếu được gủi qua mail cho mình cái với: thanhtrung.xl@gmail.com)
Hoàng Ngọc Thanh said
e chào thầy!
thầy cho e hỏi có cách nào mà hiển thị được các ký tự mình nhập vào ở ô JPasswordField ko thầy.
mà e muốn nó hiển thị ngay trong ô đó luôn à.
ví dụ như e nhập mật khẩu sai thì nó báo ra “bạn nhập mật khẩu sai”
e cảm ơn thầy!
Võ Văn Hải said
ẹc. nếu vậy thì bạn dùng JTextField chứ mắc chi mà dùng JPasswordField? Còn bạn muốn lấy chuỗi bạn nhập trong JPasswordField thì bạn dùng
String psw=new String(yourJPF.getPassword());
HaGiang said
Thầy giúp em với.Cách nào để em tăng heap space lên được thầy.Em dùng lệnh:
java -Xmx3G myclassName
=> could not reserve enough space for object heap
còn nếu như dùng lệnh:
java -Xmx4G myclassName
=>this specified size exceeds the maximum representable size, could not create the java virtual machin
HaGiang said
Nhờ Thầy giúp em với.Em cần một cái mảng 5 chiều int [30][30][30][30][5000].Vì kích thước quá lớn,chương trình báo lỗi java heap space.Cách nào để em tăng heap space lên .Em dùng lệnh:
java -Xmx3G myclassName
=> could not reserve enough space for object heap
còn nếu như dùng lệnh:
java -Xmx4G myclassName
=>this specified size exceeds the maximum representable size, could not create the java virtual machin
Quý said
Em chào thầy Hải!
Em đang làm BTL về đề tài: Sắp xếp lịch học, ở đây học theo tín chỉ. Em đã tìm hiểu nhưng vẫn chưa tìm ra được thuật toán. Rất mong thầy giúp đỡ,
Thầy ơi giúp em với ạ!
Em cảm ơn!
Võ Văn Hải said
“Sắp xếp lịch học, ở đây học theo tín chỉ. ”
Cái này thầy chưa làm nên chưa biết thuật toán. Em nên gặp người làm thực tế phân lịch hỏi cách làm sau đó viết.
Quý said
Em cảm ơn thầy!
nguyen van nam said
Em chào thầy. Em mới hoc Java,lên chưa biết nhiều.Xin phép thầy cho em hỏi:
Em có đề bài như sau:
“Lập chương trình trên Form ,in ra tất cả các số nguyên tố từ 2 đến n (n là số nguyên).”.
Lam thế nào mà in được trên Form. Xin thầy chỉ dạy
Quàng Văn Hải said
em chào thày,thày có thể giải đáp cho em làm sao cài được swingx trong netbean không em cài mãi mà không được nó báo lỗi
“failed to load main-class mainfest attribute from”
TungNT01650 said
Em chao` thay`. Em moi bat dau hoc java. em co bai tap lien quan den treeSet. Em muon hoi? thay` la muon sinh so’ tu. dong trong treeSet thi` lam the nao` a.? Em khoi? tao 9 doi tuong cho no sap xep theo bang? chu~ cai. nhung cai so’ thu’ tu. thi` em ko biet lam the nao`. Mong thay` va cac ban giup do em.
TungNT01650 said
@Nguyễn Văn Nam. mạn phép thử trả lời câu hỏi của bạn. bạn dùng : [tên biến].setText(có thể chưa các biến khác đã được gán giá trị) để in ra.
ví dụ bạn muốn in ra trên textarea nó sẽ là jtextare.setText(***);
Hồ Công Danh said
Hi Thầy,
Em đang viết 1 ứng dụng client/server, có 2 dạng kết nối:
1. Sử dụng Http
2. Sử dụng socket.
Develop trên ngôn ngữ java.
Vậy, thầy có thể so sánh giữa socket và http dùm e không?
Thanks!
đào Lisa said
thầy ơi, thầy có thể giành chút thời gian hướng dẫn em bài nj với :”viết chương trình tạo ra một bàn phím trên 2 máy tính A và B. viết chương trình điều khiển các sự kiện nhấn phím trên máy tính B thông qua máy tính A và hiện kết quả lân màn hình của máy B( thí dụ: khi nhấn một phím trên máy A cũng tương ứng với việc nhấn phím đó trên máy tính B).”
em chân thành cảm ơn thầy nhiều ha.
Võ Văn Hải said
Http là giao thức web, còn Socket là 1 đối tượng trong java dựa trên TCP để giao tiếp qua mạng.
Kết nối http-> dùng jsp mà viết
Võ Văn Hải said
Thì cái object em bỏ vào TreeSet em phải implements cái Comparable, trong đó em override compareTo(E other).
EM phải so nếu 2 số bằng thì trả về 0, this.yourNum>other.yourNum thì trả về 1, ngược lại trả về -1 là xong.
NguyenDuyTan said
Chào Thầy và chào các bạn , mong thầy và các bạn chỉ giáo em mình với. Mình kết nối CSDL SQL Server 2000 , nhưng báo lỗi hoài. Đây là code:
try{
Connection con=null;
Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
con=DriverManager.getConnection(“jdbc:sqlserver://localhost:1433;Databasename=TEST;User=sa;Password=123;”);
System.out.println(“Successfully”);
}catch(Exception e){
e.printStackTrace();
}
Java báo lỗi : The TCP/IP connection to the host localhost, port 1433 has failed. Error: “Connection refused: connect. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.”
Mình đã cài sqljdbc4 , và đã start Server!!
Mong Thầy và các bạn giúp đỡ , mình xin cảm ơn rất nhiều.
KTri said
KTri said
Your comment is awaiting moderation.
November 12, 2011 at 2:32 am
Dạ Em chào Thầy Hải và tất cả các bạn. Thầy Ơi .em dang học về lập trình mạng với java nên vẫn còn nhiều khó khăn em mong thầy và các bạn giúp em bài tập này với ạ :Viết chương trình theo mô hình Client-Server sử dụng socket ở chế độ có kết nối.Trong đó :+ server làm nhiệm vụ đọc 1 kí tự số từ 0 đến 9 .ví dụ :nhận số 0 trả về :không ,nhận số 9 trả về: chín…nếu nhận kí tự khác số thì trả về không phải số nguyên.
+Client sẽ nhập vào 1 kí tự ,gửi qua server,nhận kết quả trả về từ server và thể hiện lên màn hình .
Võ Văn Hải said
Phải mở cái cổng 1433 ra em ơi. Vào Manager sau đó enable cái TCP/IP lên là OK.
Võ Văn Hải said
“Dạ Em chào Thầy Hải và tất cả các bạn. Thầy Ơi .em dang học về lập trình mạng với java nên vẫn còn nhiều khó khăn em mong thầy và các bạn giúp em bài tập này với ạ :Viết chương trình theo mô hình Client-Server sử dụng socket ở chế độ có kết nối.Trong đó :+ server làm nhiệm vụ đọc 1 kí tự số từ 0 đến 9 .ví dụ :nhận số 0 trả về :không ,nhận số 9 trả về: chín…nếu nhận kí tự khác số thì trả về không phải số nguyên.
+Client sẽ nhập vào 1 kí tự ,gửi qua server,nhận kết quả trả về từ server và thể hiện lên màn hình .”
Server như sau:
package vovanhai.wordpress.com; import java.io.IOException; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class ChangeNum2String_Server { public static void main(String[] args) throws Exception{ ServerSocket svr=null; try { svr=new ServerSocket(5555); System.out.println("Server starting..."); //1.Chấp nhận kết nối while(true){ final Socket soc=svr.accept(); new Thread(new Runnable() { public void run() { try { //2.Lấy yêu cầu Scanner in = new Scanner(soc.getInputStream()); String x=in.nextLine(); int so = Integer.parseInt(x); //3.Xử lý String chu=ChangeIt(so); //4. Gửi đáp ứng PrintWriter out = new PrintWriter(soc.getOutputStream(),true); out.println(chu); } catch (NumberFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }).start(); } } catch (Exception e) { e.printStackTrace(); } finally{ if(svr!=null)svr.close(); } } private static String ChangeIt(int so) { String s=""; switch(so){ case 0:s="không";break; case 1:s="một";break; case 2:s="hai";break; case 3:s="ba";break; case 4:s="bốn";break; case 5:s="năm";break; case 6:s="sáu";break; case 7:s="bảy";break; case 8:s="tám";break; case 9:s="chín";break; } return s; } }Client như sau:
package vovanhai.wordpress.com; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; public class ChangeNum2String_Client { public static void main(String[] args)throws Exception { Socket soc=null; try { //nối đến server soc=new Socket("127.0.0.1",5555); //1.Gửi yêu cầu PrintWriter out=new PrintWriter(soc.getOutputStream(),true); out.println("6"); //2.Lấy đáp ứng Scanner in=new Scanner(soc.getInputStream()); String kq=in.nextLine(); //3. Xử lý System.out.println("Nhận kết quả: "+kq); } catch (Exception e) { e.printStackTrace(); } finally{ if(soc!=null)soc.close(); } } }KTri said
Em chan thanh cam on Thay .Em Chuc Thay luon thanh cong trong cuoc song va trong moi linh vuc
ngocHung said
em chao thay va cac ban.em co 1 van de trong java em muon nho thay giup do. em co 1 bai tap lien quan den viec gui mail va nhan mail.em gap kho khan trong viec dua 1 danh sach mail add vao 1 comboBox. co nghia la khi minh nhan vao 1 ten mail trong listbox do thi no se hien ra trong 1 textFile. nhung gio em ko pit lam sao ma add cai danh sach do vao ComboBox duoc.mong thay ca cac ban giup do.em xin chan thanh cam on.va mong thay som hoi am
oanh said
e chao thay.thay cho e hoi.e dang lam bên j2me.e có doạn code viet calculator bang j2me.nhưng đó là viêt1 bàng đien thoai cảm ưng.e muón viêt tren dien thoai nokia bang phím bâm.mong thâý giup e.e cam on
oanh said
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
//đặc tả class phần mềm Calculator
public class Calculator extends MIDlet implements CommandListener {
//định nghĩa các biến cần dùng
private boolean midletPaused = false;
private SampleCanvas mycanvas;
private Command exitCommand;
private Command backCommand;
//định nghĩa các hàm chức năng
private void initialize() {}
public void startMIDlet() {
Display display = Display.getDisplay(this);
exitCommand = new Command(“D\u1eebng”, Command.EXIT, 1);
backCommand = new Command(“Reset”, Command.BACK, 2);
mycanvas=new SampleCanvas();
mycanvas.addCommand(exitCommand);
mycanvas.addCommand(backCommand);
mycanvas.setCommandListener(this);
display.setCurrent(mycanvas);
}
public void resumeMIDlet() {}
public void switchDisplayable(Alert alert, Displayable nextDisplayable) {
Display display = Display.getDisplay(this);
if (alert == null) display.setCurrent(nextDisplayable);
else display.setCurrent(alert, nextDisplayable);
}
public void commandAction(Command command, Displayable displayable) {
if (command == backCommand) mycanvas.MyInit ();
else if (command == exitCommand) {
destroyApp(false);
this.notifyDestroyed();
}
}
public void exitMIDlet() {
switchDisplayable (null, null);
destroyApp(true);
notifyDestroyed();
}
//điểm nhập của ứng dụng
public void startApp() {
if (midletPaused) resumeMIDlet ();
else {
initialize ();
startMIDlet ();
}
midletPaused = false;
}
public void pauseApp() {
midletPaused = true;
}
public void destroyApp(boolean unconditional) {}
}
//class đặc tả form làm việc của ứng dụng
class SampleCanvas extends Canvas {
//định nghĩa các hằng gợi nhớ cần dùng
final int ADDID = 1;
final int SUBID = 2;
final int MULID = 3;
final int DIVID = 4;
final int EQUALID = 5;
//định nghĩa các biến cần dùng
Font font;
Graphics gh;
int ww, wh;
int baseX, baseY;
int bw,bh;
String valdisp,strOldValue;
int row, col;
boolean fDot, fStartData;
int OldOpID;
//hàm khởi tạo đối tượng
SampleCanvas() {
//thiết lập font chữ cần dùng
font = Font.getFont(Font.FACE_PROPORTIONAL,
Font.STYLE_BOLD, Font.SIZE_LARGE);
MyInit();
}
//hàm thiết lập trạng thái đầu cho Calculator
public void MyInit() {
//xác định độ rộng, độ cao của form
ww=this.getWidth();
wh = this.getHeight();
//xác định độ rộng, độ cao của từng button
bw= (ww-15)/4;
bh = 25;
//xác định vị trí trên trái của vùng làm việc
baseX = 3; baseY= 4;
valdisp = “0.”;
fStartData = true;
fDot = false;
strOldValue = “0″;
OldOpID = EQUALID;
repaint();
}
//hàm xử lý phím ấn, hiện chỉ có khung sườn
protected void keyPressed(int key) {
int action = getGameAction(key);
switch (action) {
case LEFT:
break;
case RIGHT:
break;
case UP:
break;
case DOWN:
break;
case FIRE:
break;
}
repaint();
}
//hàm cập nhật màn hình tinh thể lỏng
protected void UpdateDisplay(int d) {
if(fStartData) {
valdisp = Integer.toString(d);
fStartData = fDot = false;
} else
valdisp = valdisp + Integer.toString(d);
repaint();
}
//hàm xử lý phím phép toán
private void Op_Process(int op) {
double dblOldValue;
double dblValue;
//xác định 2 toán hạng
dblValue = Double.parseDouble(valdisp);
dblOldValue = Double.parseDouble(strOldValue);
//kiểm tra phép toán cần thực hiện
switch (OldOpID) {
case ADDID :
dblValue = dblOldValue + dblValue; break;
case SUBID:
dblValue = dblOldValue – dblValue; break;
case MULID:
dblValue = dblOldValue * dblValue; break;
case DIVID :
dblValue = dblOldValue / dblValue; break;
}
valdisp = Double.toString(dblValue);
strOldValue = valdisp;
OldOpID = op;
fStartData = true;
}
//hàm xử lý sự kiện ấn chuột (chạm màn hình cảm ứng)
protected void pointerPressed(int x, int y) {
//kiểm tra vị trí chuột có nằm trên các button?
if (baseY+bh+3 > y || y > baseY + (bh+3)*6) return;
//xác định vị trí button được chọn
col = (x – baseX) / (bw+3);
row = (y – baseY-bh-3) / (bh+3);
switch (row) {
case 0: //các button hàng đầu
switch (col) {
case 0: //nút C
MyInit(); break;
case 1: //nút sqrt
valdisp = Double.toString(Math.sqrt(Double.parseDouble(valdisp)));
break;
case 2: //nút 1/x
valdisp = Double.toString(1/Double.parseDouble(valdisp)); break;
case 3: //nút /
Op_Process(DIVID);
}
break;
case 1: //các button hàng thứ 2
switch (col) {
case 0: //nút 7
UpdateDisplay(7); break;
case 1: //nút 8
UpdateDisplay(8); break;
case 2: //nút 9
UpdateDisplay(9); break;
case 3: //nút *
Op_Process(MULID);
}
break;
case 2: //các button hàng thứ 2
switch (col) {
case 0: //nút 4
UpdateDisplay(4); break;
case 1: //nút 5
UpdateDisplay(5);break;
case 2: //nút 6
UpdateDisplay(6);break;
case 3: //nút -
Op_Process(SUBID);
}
break;
case 3: //các button hàng thứ 3
switch (col) {
case 0: //nút 1
UpdateDisplay(1);break;
case 1: //nút 2
UpdateDisplay(2); break;
case 2: //nút 3
UpdateDisplay(3);break;
case 3: //nút +
Op_Process(ADDID);
}
break;
case 4: //các button hàng thứ 4
switch (col) {
case 0: //nút 0
UpdateDisplay(0);break;
case 1: //nút .
if (fStartData) {
valdisp = “0.”;
fStartData = false;
} else if (fDot==false) {
valdisp = valdisp + “.”;
fDot = true;
}
break;
case 2: //nút +/-
//nếu là số âm thì đổi thành dương và ngược lại
if (valdisp.charAt(0)!= ‘-’) {
//chỉ đảo dấu khi giá trị khác 0
if (Double.parseDouble(valdisp) != 0)
valdisp = “-” + valdisp;
} else valdisp = valdisp.substring(1);
break;
case 3: //nút =
Op_Process(EQUALID);
}
break;
}
repaint();
}
//hàm hiển thị các đối tượng trong form
protected void paint(Graphics g) {
int x, y;
gh = g;
g.setFont(font);
x = baseX;
y = baseY;
//vẽ textbox miêu tả màn hình display
gh.setColor(128,128,128);
gh.fillRect(x, y, ww-6,bh);
gh.setColor(0,255,255);
gh.drawRect(x, y, ww-6,bh);
gh.setColor(255,255,255);
gh.drawString(valdisp, ww-8, y, Graphics.RIGHT|Graphics.TOP);
//vẽ hàng button thứ nhất
y = y + bh+3;
DispButton(x, y,”C”,0);
DispButton(x+bw+3, y,”sqrt”,0);
DispButton(x+(bw+3)*2, y,”1/x”,0);
DispButton(x+(bw+3)*3, y,”/”,0);
//vẽ hàng button thứ nhất
y = y + bh+3;
DispButton(x, y,”7″,0);
DispButton(x+bw+3, y,”8″,0);
DispButton(x+(bw+3)*2, y,”9″,0);
DispButton(x+(bw+3)*3, y,”*”,0);
//vẽ hàng button thứ nhất
y = y + bh+3;
DispButton(x, y,”4″,0);
DispButton(x+bw+3, y,”5″,0);
DispButton(x+(bw+3)*2, y,”6″,0);
DispButton(x+(bw+3)*3, y,”-”,0);
//vẽ hàng button thứ nhất
y = y + bh+3;
DispButton(x, y,”1″,0);
DispButton(x+bw+3, y,”2″,0);
DispButton(x+(bw+3)*2, y,”3″,0);
DispButton(x+(bw+3)*3, y,”+”,0);
//vẽ hàng button thứ 5
y = y + bh+3;
DispButton(x, y,”0″,0);
DispButton(x+bw+3, y,”.”,0);
DispButton(x+(bw+3)*2, y,”+/-”,0);
DispButton(x+(bw+3)*3, y,”=”,0);
}
//hàm vẽ 1 button
private void DispButton(int x, int y, String str, int flag) {
if (flag==0) { //ở trạng thái chưa chọn
gh.setColor(128,128,128);
gh.fillRect(x, y, bw,bh);
gh.setColor(0,255,255);
gh.drawRect(x, y, bw,bh);
gh.setColor(0,0,255);
gh.drawString(str, x+15, y, Graphics.LEFT|Graphics.TOP);
} else { //ở trạng thái đang chọn
gh.setColor(0,0,255);
gh.fillRect(x, y, bw,bh);
gh.setColor(0,255,255);
gh.drawRect(x, y, bw,bh);
gh.setColor(255,255,255);
gh.drawString(str, x+15, y, Graphics.LEFT|Graphics.TOP);
}
}
}
gaubaccuc said
E Chào thầy, E Nhờ thầy giúp e bài này được ko ạ,
- E muốn làm soft chạy trên mobile(Dùng ngôn ngữ j2me): Không cần giao diện mà nó chỉ cần thu thập dữ liệu của cái mobile rồi send đến server của mình. e xin cảm ơn thầy.
Võ Minh Phụng said
Thầy cho em hỏi các phương thức trong rmi chat đó thầy.Em cảm ơn thầy.
Võ Minh Phụng said
Thầy ơi,có demo thì share cho em tham khảo nghen thầy.Thanks thầy.
Võ Văn Hải said
“soft chạy trên mobile(Dùng ngôn ngữ j2me): Không cần giao diện mà nó chỉ cần thu thập dữ liệu của cái mobile rồi send đến server của mình.”
Cái này vi phạm quyền riêng tư người dùng.
Vả lại tôi cũng không rành về điều này.
Thuy.Duong said
Chào thầy, em muốn hỏi vấn đề về mảng 2 chiều của J2ME như sau:
Em nhập vào textfield từ bàn phím ma trận vuông n x n, số âm dương lẫn nhau, mỗi phần tử số cách nhau bằng một khoảng trắng:
12 -5 87
14 78 0
6 3 -1
Làm cách nào để có thể tách mỗi phần tử số để đưa vào một mảng động 2 chiều ạ? Xin cảm ơn thầy trước
bùi minh đức said
Bùi Minh Đức
e chào thầy Hải chào tất cả các a chị e trong 4room, e có câu hỏi như thế này ạ
e đang phải làm về ” hiển thị các file như .doc và .pdf ” trên webform viết = C#, nhưng e chưa biết phải làm như thế nào.
tức là có một file word hoặ pdf trong database rồi e phải làm thế nào để khi click Button xem thì nó sẽ hiển thị lên Lưới theo dạng word và pdf. Thầy và mọi người chỉ jum e nha. Thanks All
nguyen dang said
Em chào thầy.
- Hiện em đang làm để tài JDic viết trên nền java nhưng vấn để ở csdl em không biết phải định nghĩa ra sao.
- Để tạo csdl trên mysql hay sqlserver thì quá đơn giản. Nhưng vấn để là mình định nghĩa csdl của mình như thế nào để người dùng có thể mang đi mà không cần fải cài đặt thêm ctrình csdl nào hết thì fải làm sao thưa thầy
Võ Văn Hải said
“Để tạo csdl trên mysql hay sqlserver thì quá đơn giản. Nhưng vấn để là mình định nghĩa csdl của mình như thế nào để người dùng có thể mang đi mà không cần fải cài đặt thêm ctrình csdl nào hết thì fải làm sao thưa thầy”
Em có thể dùng kỹ thuật Serialization để số hóa các dối tượng xuống file và khôi phục lại nó như là 1 cơ sở dữ liệu cơ bản.
Cần said
thầy ơi em có 1 vấn đề xin hỏi thầy là :
Thầy chỉ giùm em làm sao có thể load dữ liệu từ csdl lên 1 textbox ….
Quý said
Em chào thầy!
Thầy cho em hỏi câu này ạ: Tại sao trong java nên viết phương thức khởi tạo mặc định? Lấy ví dụ để giải thích thêm cho rõ.
Em xin cảm ơn!
DangQuocDien said
Chao thay, thay cho em hoi ti nha vi em moi hoc lap trinh socket nen cung chua hieu nhieu lam .
thay cho em hoi ve client/server: gia su csdl ten la “cauhoi” trong csdl co 1 table tbl_cauhoi voi 5 truong la: “Q” de luu cau hoi, “A” la dap an a,”B ” la dap an b, “C” luu dap an c, “D” luu dap an d. thay co cach nao lam cho server doc du lieu tu bang tbl_cauhoi sau do goi cho client.ben client thi nhan duoc cau hoi va dap an thi hien thi len form client nhu sau: “Q” hien thi tren Jtexarea, con 4 dap an “A”,”B”,”C”,”D” thi hien thi len 4 Jradiobutton tuong ung khong a.xin thay huong dan dum em. cam on thay!
Võ Văn Hải said
“Tại sao trong java nên viết phương thức khởi tạo mặc định?”
Không bắt buộc phải viết default constructure cho mọi trường hợp. Tuy nhiên với 1 javabean chẳng hạn, bạn buộc phải có 1 default constructor.
default constructor cho bạn cách thức tạo 1 đối tượng với các thuộc tính mặc định. Ví dụ bạn có 1 lớ tên A như sau
class A{
}
sau đó để tạo 1 thể hiện của đối tượng A bạn viết như sau: A a=new A();
Như vậy bạn dùng default constructor để tạo đối tượng.
Giải thích 1 cách cặn kẽ thì cũng rất là dải. Bạn chịu khó đọc lại 1 chút về OOP sẽ rõ.
Quý said
Em cảm ơn thầy ạ!
japanese1801 said
thầy ơi!
làm sao để chuyển đổi font chữ tiếng việt trong j2me thầy?
hakanh said
Thưa thầy!
Em đã tạo kết nối tới CSDL thành công. Giờ em muốn xử lí kết quả, em muôn gán những kết quả truy vấn được từ CSDL cho hiển thị lên jList thì em cần làm như thế nào ạ!
moihocjava said
Thầy ơi, xin thầy chỉ giúp câu lệnh if(arg.matches(“\\-\\-?v(erbosity)?\\=\\d+”)) nằm trong đoạn lệnh sau:
public static void main(String args[])
{
Run run = new Run();
run.verbosity = 2;
List directoriesToProcess = new LinkedList();
String args1[];
int j = (args1 = args).length;
for(int i = 0; i 0)
{
run.setTextRepository(TextFactory.loadTextRepositoryFromDirectories(directoriesToProcess));
} else
{
System.err.println(“Include at least one directory to read from as parameter!”);
System.exit(2);
}
BasicExamplePipeline.addExampleTexts(run);
run.addFilter(new LinnaeusSpeciesServiceNer());
GnatServiceNer gnatServiceNer = new GnatServiceNer(new gnat.server.GnatService.Tasks[] {
gnat.server.GnatService.Tasks.GENE_NER
});
bởi vì khi em dịch thì thấy báo lỗi: Include at least one directory to read from as parameter!
em có tìm thử với biến arg.match đó nhưng k hiểu lắm..thầy coi giúp em với..
cám ơn thày nhiều!
lequocbao said
thầy và các bạn ai có toàn bộ file nén project calculator giử dùm em với, em cảm ơn nhiều
J2meBasic said
Chào Thầy!
em đang viết chương trình chat nhưng em chỉ biết cách tạo luồng để server và client nói chuyện với nhau, giờ em muốn client chat với client thì làm thế nào
đây là chương trình của em:
//TimeServer.java
import java.io.DataOutputStream;
import java.net.*;
import java.util.Date;
public class TimeServer{
public static void main(String args[]) throws Exception{
ServerSocket server=new ServerSocket(7000);
System.out.println(“khoi dong server”);
while(true){
Socket socket=server.accept();
new doRequest(socket).start();
//socket.close();
}
}
}
class doRequest extends Thread {
Socket socket;
DataOutputStream dos;
public doRequest(Socket sk) {
socket=sk;
}
public void run(){
try{
dos=new DataOutputStream(socket.getOutputStream());
while(true){
//String time=new Date().toString();
Date time=new Date();
dos.writeUTF(“server tra lai thoi gian he thong:”+time);
Thread.currentThread().sleep(1000);
}
}catch(Exception e)
{
//System.out.println(“loi dorequest”);
}
}
}
//TimeClient.java
/**
* @(#)TimeClient.java
*
*
* @author
* @version 1.00 2012/2/17
*/
import java.io.DataOutputStream;
import java.io.DataInputStream;
import java.net.Socket;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class TimeClient{
public static void main(String arg[]) throws Exception{
Socket socket=new Socket(“localhost”,7000);
String[] listID=TimeZone.getAvailableIDs();
for(String id:listID)
System.out.println(id);
while(socket.getInputStream()!=null){
DataInputStream din=new DataInputStream(socket.getInputStream());
SimpleDateFormat formatter=new SimpleDateFormat();
Date time=new Date();
String str=din.readUTF();
// String str = “2012/02/20″;
try{
time=formatter.parse(str);
}catch(ParseException e){
}
//Object listID=new Object();
System.out.println(time.getSeconds());
}
}
}
cảm ơn thầy.
J2meBasic said
xin lỗi em nhầm file
đây là chương trình chat:
///** * @(#)SimpleChatServer.java * * * @author * @version 1.00 2012/2/17 */ import java.io.*; import java.util.*; import java.net.*; /*Chuong trinh chat don gian Server nhan message tu Client */ public class SimpleChatServer { public static void main(String[] args) throws Exception { ServerSocket server = new ServerSocket(7000); System.out.println("Server is started"); while(true) { Socket socket = server.accept(); new doRequest(socket).start(); } //socket.close(); } } class doRequest extends Thread{ Socket socket; DataInputStream din; DataOutputStream dos; public doRequest(Socket sk){ socket=sk; } public void run(){ try{ din=new DataInputStream(socket.getInputStream()); Scanner kb=new Scanner(System.in); dos=new DataOutputStream(socket.getOutputStream()); // PrintWriter out=new PrintWriter(dos,true/*auto-flush*/); while(true){ String nhan=din.readUTF(); System.out.println(nhan); System.out.print("server: "); String gui=kb.nextLine(); dos.writeUTF("server:"+gui); dos.flush(); kb=kb.reset(); } }catch(Exception e) { } } }/** * @(#)SimpleChatClient.java * * * @author * @version 1.00 2012/2/17 */ import java.io.DataInputStream; import java.io.DataOutputStream; import java.net.Socket; import java.util.*; /*Chuong trinh chat don gian *Cient nhan chuoi tu ban phim gui den server *Nhan du lieu tu server */ public class SimpleChatClient { public static void main(String[] args) throws Exception { Socket socket = new Socket("localhost", 7000); DataInputStream din = new DataInputStream(socket.getInputStream()); DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); //nhap chuoi de gui den sever Scanner kb = new Scanner(System.in); while(true) { System.out.print("haithuong: "); String msg=kb.nextLine(); dos.writeUTF("haithuong: "+msg); dos.flush(); //nhan du lieu tu server String st = din.readUTF(); System.out.println(st); kb = kb.reset(); } } }J2meBasic said
thầy có thể cho em một ví dụ về mutil-Line textbox không?
em đang tìm cách để hiển thị nội dung chat (swing) mà không biết dùng đối tượng nào trong java.
cảm ơn thầy.
mong thầy giúp đở
Nguyễn Thị Thu said
Thầy ơi cho em hỏi cách để chuyển dữ liệu từ jTable trong java ra file Excel?
Yin Yang said
Một server cũng có thể coi là 1 client, bạn có thể truyền trực tiếp dữ liệu giữa 2 client với nhau hoặc thông qua một server làm trung gian.
Thông Anh (Lập trình viên Aptech) said
Thầy ơi cho em hỏi, em đang làm eProject đề tài “Quản lí nguồn nhân lực”, Gồm có các gian đoạn :
1/ Problem definition
2/ Identification customer requirements
3/ Database design
4/ Data flow diagram
5/ Algorithm
6/ Coding
Nếu muốn làm bước 4 ( Data flow diagram) tốt thì phải dựa vào bước 3(Database design), làm được bước 5(Algorithm) tốt thì dựa vào bước 4 phải không thầy? nếu bước 4 làm không kỉ (làm sai), thì bước 5 cũng sai theo luôn phải không thầy?
Nhóm em có 3 người, Bạn làm bước 4 thì nói : Data flow diagram không nên làm kỉ, tại vì đã làm bước 5 rồi, nếu làm kỉ quá thì không cần phải có bước 5.
Vậy bạn em nói đúng hay sai? xin thầy giải đáp cho em, cám ơn thầy!
Võ Văn Hải said
multiline textbox= JTextArea
Phạm Hồng Nam said
Thầy ơi.Em mới học java.Thầy cho em hỏi: muốn import 1 bức ảnh đuôi jpg trong eclipse thì phải làm thế nào ạ .Thầy có thể cho em 1 bài để em tham khảo được không ạ
Võ Văn Hải said
“muốn import 1 bức ảnh đuôi jpg trong eclipse …”
Bạn tạo 1 thư mục(folder) con của project (giả sử tên images) sau đó copy hình từ máy tính paste vào đó. Sau đó bạn truy xuất hình nằm trong thư mục đó bằng đường dẫn tương đối images/tenhinh.jpg.
Lê Hoài Hân said
Chào Thầy!
Em là thành viên mới của web.
Nay em vào đây xin thầy chỉ giúp em code của sự kiện sau đây:
From của em gồm:
EventID; Title; Description; Photo; Datestar; Dateend;
Em không biết đoạn code khi mà thời gian bắt đầu event đến lúc kết thúc thì button Register sẽ Enabled(true), còn nếu chưa đến thời gian bắt đầu Event hay đã qua thời gian kết thúc Event thi button Register sẽ Enabled(false). Và được viết bằng EJB 3.
Mong thầy giúp em.
Phạm Hồng Nam said
em cũng làm cách đó ùi nhưng mà nếu ảnh jpg cỡ khoảng 3000×2000 thì ảnh import bị lỗi ạ.Em không biết phải làm thế nào ạ
Thầy có thể cho em 1 bài mẫu được không ạ
Lâm said
Chào thầy em đang tạo chương trình thi trắc nghiệm giữa mạng lam bằng socket.Em muốn bên sever tự động gửi câu hỏi về khi bên client nhấn nút bắt đầu thi thì phải làm thế nào?
Dai Hoang said
Thầy có thể giúp em chèn video trong java được không ạ ?
meocon said
Thầy ơi! Thầy có thể hướng dẫn giúp em xuất 1 file java ra report hoặc PDF được không, em cảm ơn Thầy.
meocon said
Thầy ơi làm ireport nhưng khi nhập câu sql select * from tênbang thì báo lỗi. mặc dù
mình đã test kết nối csdl và báo là thành công rồi.
Query error
Message:
net.sf.jasperreports.engine.JRException: org.postgresql.jdbc1.Jdbc1PreparedStatement.setFetchSize(I)V
Level:
SEVERE
Stack Trace:
org.postgresql.jdbc1.Jdbc1PreparedStatement.setFetchSize(I)V
com.jaspersoft.ireport.designer.data.fieldsproviders.SQLFieldsProvider.getFields(SQLFieldsProvider.java:444)
com.jaspersoft.ireport.designer.connection.JDBCConnection.readFields(JDBCConnection.java:470)
com.jaspersoft.ireport.designer.wizards.ConnectionSelectionWizardPanel.validate(ConnectionSelectionWizardPanel.java:146)
org.openide.WizardDescriptor$7.run(WizardDescriptor.java:1357)
org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)
org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)