Võ Văn Hải's blog

Chỉ có một điều tuyệt đối đó là mọi thứ đều tương đối…

74 Responses to “Lập trình java căn bản”

  1. US said

    thưa thầy!em muốn trao đổi với thầy về cái môn java này thì em trao đổi thẳng trên blog này luôn hả? thầy . hay em phải gửi mail dạ thầy.
    mà em xin hỏi thầy : em muốn theo java, mà em lại học cao đẳng, trong khoảng thời gian 2 năm (tại vì năm đầu bỏ , hoc mấy cái môn tự nhiên).Cái khoảng thời gian 2 năm đó có đủ để theo chuyên về java đuợc ko thầy.

  2. hTung said

    Chào thầy, thầy cho hỏi có cuốn sách nào về lập trình Swing tiếng Việt không cho em 1 cuốn

  3. hTung said

    Em nghe nói PHP nhanh hơn JSP 4 lần, số người dùng JSP cũng khá ít, vậy bọn em có cần học JSP không thầy

  4. Quoc Quan said

    Thầy ơi! Trong quá trình thầy dạy trên lớp thầy có làm những ví dụ minh họa vậy thầy có thể post lên để em lấy về xem được không thầy. Em cảm ơn thầy nhiều.

  5. HoangDoMinhDuc said

    Thầy ơi!Em cài JCREATE PRO xong thì nó không chạy và báo lỗi như vậy là sao thầy
    “Your system clock appears to have been set back, possibly in an attempt to defeat the security system on this program. Please correct your system clock before trying to run this program again. If your clock is correct, please contact the author of this program for instructions on correcting this error (report code CCB-F).”

  6. Em reset thời gian hệ thống về năm 1995 là được!

  7. HoangDoMinhDuc said

    Cám ơn thấy.Cho em hỏi 1 câu hỏi ngoài lề ah.Máy tính của em có down 1 tài liệu pdf về nhưng em quên cài foxit reader nên nó báo lỗi,em đã cài lại,nhưng không hiểu sao ổ đỉa chứa cái soft foxit này hiên lỗi font chữ không đọc được,hầu như các file trong ỗ đĩa này đều bị như vậy.Nó không những không đọc được mà cón không xóa được(“Make Use The Disk is Not FUll or Write-Potected and that the file is not currently in use”)Và đặc biệt ổ này em chia có 10GB,nhưng kiểm tra dung lượng các file này lên đến 29 GB.Cám Ơn Thấy.

  8. Tý tèo said

    Dùng Acrobat Reader đọc đi. Free mà!

  9. Tô Bá Cường said

    Thưa thầy, Em và các bạn đang làm một số câu trắc nghiệm trên đĩa, gõ lệnh và chạy có mấy câu chạy đc nhưng nhiều câu chạy bị lỗ thầy ạ, mặc dù em và các bạn đã sữa giống như đề bài mà cũng ko đc, vậy giờ phải làm sao đây ạ
    Mong thầy sớm nhắn lại cho em biết. Cảm ơn thầy rất nhiều

  10. vovanhai said

    Các câu trắc nghiệm trên đĩa bị lỗi? Cái này có thể vì nhiều quá, có vài câu bị nhầm lẫn cũng là chuyện thường. Những câu nào lỗi em có thể gửi trực tiếp lên đây bàn luận nhé!

  11. NCTH1A said

    Thay oi cho em hoi lop em NCTH1A (nhom 4)
    Thay cho em biet lich thi lai cuoi ky di thay, thay noi cham nhat la thu 7 (27/12) se co thong bao tren blog ma em ko tim thay T.T

  12. minh said

    thầy ơi, thầy có bài tập java tổng hợp từ đầu tới cuối không ạ. Thầy cho em để em tham khảo

  13. Phương Thảo said

    em chàp thầy. Em mới học java. Và đang học cách tạo một game. Em có chút rắc rối mong thầy giải đáp cho em. Game của em sẽ tạo các hình ảnh đi từ bên này sang bên kia JPanel. Em ghép ảnh vào một JLabel và cho vào JPnael để chạy bằng Thread. EM có chút rắc rối là khi 2 JLabel chay song song cung nhau, nó sẽ bị giật hình. Em phải làm gì để sửa nó ạ. Em cám ơn thầy

  14. phamvanvu205 said

    Cac ban cu yen tam tham khao xem xet roi go tung code cua Thay Hai kien thuc tich luy dan thoi. Chu tai lieu nhieu ma lam ko het thi cung phi.Ai co nhu cau muon tai lieu thi Add cho minh Yh:pham_vu205 minh tich luy nhieu code bao J2ee,jsp…
    Chuc vui.

  15. nicfull said

    thầy ơi sao em down phần Text Book và Sách tham khảo về lại ko xem được vậy thầy ??????

  16. phamvanchinh said

    thay oi cho em hoi!
    ve viec lam de tai cho lop NCTH2B sao ha thay?
    em lam song rui` jo mun nop cho thay thj` lam sao a.?

  17. Danh Sach Lien Ket va ArrayList said

    Chao Thay!
    Em đang viết một chương trình Java QLNV như sau :
    NV gồm 3 thuộc tính cơ bản :Họ Tên ,Giới Tính,Lương
    NV gồm có hai loại :NVVP va NVSX
    NVVP :có thêm thuộc tính SONgayLam va TienMotNgay.
    NVSX co thuộc tính SoSP và GiaDVSP;
    2 Loai NV này có cùng phương thức La Tính Luong ,Nhap Thong Tin ,Xúât Thông Tin

    a.Dùng DSLK đơn để quản lí DSNV trên (them ,xoa,sua,tim kiem )
    b.Dùng ArrayList để quản lí DSNV trên

    import java.util.Scanner;
    public abstract class NhanVien
    {
    protected String HoTen;
    protected String GioiTinh;
    protected double TienLuong;

    public NhanVien(String pHoTen)
    {
    HoTen=pHoTen;
    }
    public NhanVien()
    {
    HoTen ="";
    GioiTinh="";
    TienLuong=0;
    }
    public NhanVien(NhanVien p)
    {
    HoTen=p.HoTen;
    GioiTinh=p.GioiTinh;
    TienLuong=p.TienLuong;
    }

    public NhanVien(String pHoTen,String pGioiTinh)
    {
    HoTen=pHoTen;
    GioiTinh=pGioiTinh;
    TienLuong =0;
    }

    public void NhapThongTin()
    {
    Scanner scan = new Scanner(System.in);
    System.out.print("\nNhap Ho Ten Nhan Vien : ");
    HoTen=scan.next();
    System.out.print("\nNhap Gioi Tinh Cua Nhan Vien : ");
    GioiTinh =scan.next();
    }

    public void XuatThongTin()
    {
    System.out.print("Ho ten :" +HoTen);
    System.out.print("\nGioi Tinh :"+GioiTinh);
    System.out.print("\nTien Luong :" +TienLuong);
    }

    public abstract void TinhLuong();

    }

    import java.util.Scanner;
    public class NhanVienSX extends NhanVien
    {
    private double LuongCanBan;
    private int SoSanPham;
    private final int DonGia =5000;
    NhanVienSX()
    {

    }
    NhanVienSX(String pHoTen)
    {
    HoTen=pHoTen;
    }
    public void NhapThongTin()
    {
    super.NhapThongTin();
    Scanner scan = new Scanner(System.in);
    System.out.print("\nNhap Luong Co Ban :");
    LuongCanBan =scan.nextLong();
    System.out.print("\nSo Don Vi SP:");
    SoSanPham=scan.nextInt();
    }

    public void XuatThongTin()
    {
    super.XuatThongTin();
    System.out.print("\nSo San Pham: "+SoSanPham);
    System.out.print("Luong Can Ban :"+LuongCanBan);
    //System.out.print("Luong Thang :"+TienLuong);

    }

    public void TinhLuong()
    {
    TienLuong =LuongCanBan +SoSanPham*DonGia;
    }

    }

    Nho Thay huong dan dum em cach xay dung cac Node trong dslk de quan li Nhan Vien nay.

  18. duoichon said

    Thây làm ơn cho em hỏi trong tool Stylus làm sao để đo time truy vấn bằng Xpath, em tìm hiểu mà chỉ đo được khi thực thi Xquery còn Xpath thi em không biết, thầy làm ơn chỉ giúp em

  19. Quan said

    Thầy ơi, mấy tài liệu của thầy em download về nó có đuôi lá chm_ hoặc là pdf_. Làm sao để đọc dc thầy. Nếu bỏ dấu “_” ở sau đi thì mở dc nhưng mà ko xem dc nội dung bên trong. Mong thầy giúp đỡ.

  20. vovanhai said

    em phải đảm bảo là không nhấn chuột phải lên link chọn save-as mà cứ click bình thường để nó load skydriver mới download được

  21. zzdarkzz said

    Thầy ơi em thấy thích java vì nó làm đc game giống pig game của thầy làm demi thầy có thể hướng dẫn em cách làm 1 chương trình java đơn giản là có 1 quả bóng lăn qua lăn về trong 1 cái hình vuông nguyên tắt là nó chạm cái họpp thì nó bị dội ra và thay đổi màu đc ko ạ . Cám ơn thầy nhé . có chi thầy liên lạc mail hay yahoo cho em với zzdarkzz

  22. vovanhai said

    Down về xem nhé: BounceThread.java

  23. zzdarkzz said

    Em cám ơn Thầy em muốn hỏi thêm là em muốn làm 1 notepad giống cái demo thầy từng làm. Thầy có thể giúp em đc ko ạ, em cám ơn thây

  24. vietlanh19 said

    Thầy ơi cho em hỏi em làm nhiều java class rồi mà sao class này nó cũng báo lỗi này vậy hả thầy em ko hiều cho lắm

    biuld output
    ——————–Configuration: ——————–
    javac: file not found: C:\BounceThread.java
    Usage: javac
    use -help for a list of possible options

    Process completed.

    generaloutput
    Caused by: java.lang.ClassNotFoundException: BounceThread
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    Could not find the main class: BounceThread. Program will exit.
    Exception in thread “main”
    Process completed.

  25. vovanhai said

    Em chạy command-line à? Em chắc chắn thư mục hiện hành là C:\ chứ?
    Trong biến môi trường Path nên thêm .;
    compile: javac -d . *.java
    Chúc thành công!

  26. vovanhai said

    OK. EM làm thôi!

  27. vietlanh19 said

    Thầy có thể sent cho em mã nguồn mở của Notepad của thầy không?
    em làm theo bài hướng dẫn của thầy nhưng có 1 số lỗi em muốn xem cái thầy xem mình thiếu gì , em mới tìm hiểu về java thôi cám ơn thầy nha

  28. Anh Tuấn said

    Thân chào thầy Võ Văn Hải ạ!
    Em là 1 người không am hiểu lắm về Java, nhưng sau khi tham khảo Blog của thầy trong mấy ngày qua, em cảm thấy mình có được tự tin hơn khi nhắc đến Java. Em xin chân thành cảm ơn thầy về những gì thầy đã làm cho mọi người.
    Hy vọng thầy luôn giữ được sức khỏe và phong độ để tiếp tục những gì thầy đã làm.
    Em xin chân thành cảm ơn thầy!

  29. dark1989 said

    thầy Hải ơi em có mấy đoạn code không hiểu cho lắm thầy có thể giải thích cho em được không cám ơn thầy lắm

    class Ball
    {

    public void move(Rectangle2D bounds)
    {
    x += dx;
    y += dy;
    if (x = bounds.getMaxX())
    {
    x = bounds.getMaxX() – XSIZE;
    dx = -dx;
    }
    if (y = bounds.getMaxY())
    {
    y = bounds.getMaxY() – YSIZE;
    dy = -dy;
    }
    }
    public Ellipse2D getShape()
    {
    return new Ellipse2D.Double(x, y, XSIZE, YSIZE);
    }

    đoạn Rectangle2D bounds là gì vậy thầy hình như là 1 thư viện phải ko thầy
    nói chung là toàn bộ class này em đều ko hiểu mong thầy giúp với em học online mà
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D) g;
    for (Ball b : balls)
    {
    g2.fill(b.getShape());
    }

  30. vovanhai said

    Regtangle2D là 1 class trong java cho phép vẽ 1 số các đối tựong 2D.
    super.paintComponent(g); cho phép gọi hàm paintComponent(g) của ớp cha mà nó kế thừa. Cụ thể ở đây là JFram(hoặc Frame/…)

  31. quang trung said

    thay oi em lam hoai bai nay bi lổi
    thầy giup e voi thay , e tim lổi hoai ma ko dc

    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;

    public class closemenu extends JFrame implements ActionListener
    {

    public closemenu()
    {
    JMenu mn=new JMenu();
    JMenuBar mnb=new JMenuBar(“file”);
    mnb.add(mn);
    JMenuItem exitMenuItem=new JMenuItem();
    exitMenuItem.addActionListener(this);
    mn.add(exitMenuItem);
    setJMenuBar(mnb);

    setSize(300,300);
    setVisible(true);
    setLocation(250,150);

    }
    public static void main (String[] args)
    {
    new closemenu();
    }

    }

    đây là lổi cua chuong trinh đã chạy

    ——————–Configuration: ——————–
    D:\hack\closemenu.java:15: closemenu is not abstract and does not override abstract method actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener
    public class closemenu extends JFrame implements ActionListener
    ^
    D:\hack\closemenu.java:21: cannot find symbol
    symbol : constructor JMenuBar(java.lang.String)
    location: class javax.swing.JMenuBar
    JMenuBar mnb=new JMenuBar(“file”);
    ^
    2 errors

    Process completed.

  32. vovanhai said

    Em implements ActionListener mà quên không override phương thức trừu tượng
    public void actionPerformed(ActionEvent ae){
    //….
    }

  33. quangtrung said

    thay oi cho e hoi vai dieu ve java :
    thay da tu di lam java o cong ty ,thầy thấy sao ,co nhieu ng lam viec ve java ko thay ,
    e cung thich hay mon web va java ,nhu e mun tim hieu ve java nhieu hon ,
    sao e len mang it ng nao trong vn de cap ve viec lam java và di sâu ve java, java đối voi con ng vn là khó không thầy ;
    thầy chia se kinh nghiem khi di làm ve java cho e di thầy ,

  34. vovanhai said

    Có rất nhiều công ty cần lập trình viên về java nhưng nhu cầu của họ ít khi thỏa mãn do lực lượng theo java ít vả lại có theo nhưng không sâu. Học môn này ngoài mong muốn sẽ tìm được việc còn đòi hỏi sự đam mê. Chúc em thành công!

  35. pham duc phung said

    thầy ơi! em có đoạn code này dùng để hiển thị tiếng việt trong java,nhưng ko được!Mong thầy chỉ dùm em ạ!

    import javax.swing.*;
    import java.awt.*;

    public class NewClass extends JFrame{

    private JButton cmdTest = new JButton();

    public NewClass(){
    setSize(300,200);
    setLocation(200,200);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    cmdTest.setFont(new Font(“Arial”,Font.PLAIN,15));
    cmdTest.setText(“Điểm số”);
    setLayout(new FlowLayout());
    this.getContentPane().add(cmdTest);

    }

    public static void main(String[] inp){
    new NewClass().setVisible(true);
    }
    }

  36. Nhung said

    Thầy có thể cho em xin tài liệu hướng dẫn tạo giao diên GUI được không a? em mới học java nhưng không được dạy phần này mà phải tự tìm hiểu. cám ơn thầy!

  37. Võ Văn Hải said

    nếu em dùng cmd để compile thì thêm tham số –encoding UTF-8. Còn nếu dùng với 1 IDE nào đó thì cứ việc lưu với UTF-8 là OK.

  38. thanh quang said

    thầy vui lòng upload các slide bài giảng từ tuần 5 trở về sau ạ!em cám ơn thầy nhiều!

  39. minhhai said

    thay oi.thay co the gui bai huong dan giup em lam notepad bang java duoc khong a.bai cua thay em chay nhieu loi qua.mong thay giup do.

  40. minhhai said

    thay gui qua mail minhhai1186@gmail.com. cam on thay nhieu

  41. Võ Văn Hải said

    Source code của chương trình download ở đây.

  42. thich lap trinh said

    em chào thầy.E gap phai van de nhu sau: e add dong 10 jbutton va gio em khong biet xu ly dong su kien cho JButton do nhu the nao.Mong thay giup do

  43. Võ Văn Hải said

    Thì addActionListener cho nó chứ sao em! ví dụ: btOK.addActionListener(ActionListener_implements_class);

  44. nguyễn tiến đông said

    Em chào thầy. Em đang tìm hiểu về web service trong java. thầy định hướng và cho em xin tài liệu. mong thầy giúp đỡ. Em cảm ơn!

  45. Võ Văn Hải said

    Em google nó là đọc chết bỏ.

  46. anh quan said

    chào mọi người mình đang làm game xếp hình(ghép tranh) chỉ có code tham khảo bằng java thôi :
    ai có code game này với J2ME không .share cho mình với
    cám ơn !

  47. Trương Tuấn said

    Em Chào Thầy!
    ý tưởng game (J2ME) chặn bóng: cho một quả bóng chuyển động trong một vùng giới hạn bởi ba mặt phẳng, phần thứ tư ta cho mặt phẳng nhỏ để chặn bóng.
    + Thầy cho em Hỏi?
    – cách đưa bóng, và 4 mặt phẳng vào ?
    – vậy sự kiện nào để bóng chạy đc?
    – khi mà bóng cham mặt phẳng, thì làm sao để bóng dội ra?
    – và mặt phẳng chặn bóng làm sao để mình di chuyển đc?
    Em cám ơn Thầy!

  48. Võ Văn Hải said

    Em tham khảo thử nhé:

    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import java.util.*;
    import javax.swing.*;
    
    /**
       Shows an animated bouncing ball.
    */
    public class BounceThread
    {
       public static void main(String[] args)
       {
          JFrame frame = new BounceFrame();
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.setVisible(true);
       }
    }
    
    /**
       A runnable that animates a bouncing ball.
    */
    class BallRunnable implements Runnable
    {
       /**
          Constructs the runnable.
          @aBall the ball to bounce
          @aPanel the component in which the ball bounces
       */
       public BallRunnable(Ball aBall, Component aComponent) 
       { 
          ball = aBall; 
          component = aComponent;
       }
    
       public void run()
       {
          try
          {
             for (int i = 1; i <= STEPS; i++)
             {
                ball.move(component.getBounds());
                component.repaint();
                Thread.sleep(DELAY);
             }
          }
          catch (InterruptedException e)
          {                    
          }
       }
    
       private Ball ball;
       private Component component;
       public static final int STEPS = 1000;
       public static final int DELAY = 5;
    }
    
    /**
       A ball that moves and bounces off the edges of a 
       rectangle
    */
    class Ball
    {
       /**
          Moves the ball to the next position, reversing direction
          if it hits one of the edges
       */
       public void move(Rectangle2D bounds)
       {
          x += dx;
          y += dy;
          if (x < bounds.getMinX())
          { 
             x = bounds.getMinX();
             dx = -dx;
          }
          if (x + XSIZE >= bounds.getMaxX())
          {
             x = bounds.getMaxX() - XSIZE; 
             dx = -dx; 
          }
          if (y < bounds.getMinY())
          {
             y = bounds.getMinY(); 
             dy = -dy;
          }
          if (y + YSIZE >= bounds.getMaxY())
          {
             y = bounds.getMaxY() - YSIZE;
             dy = -dy; 
          }
       }
    
       /**
          Gets the shape of the ball at its current position.
       */
       public Ellipse2D getShape()
       {
          return new Ellipse2D.Double(x, y, XSIZE, YSIZE);
       }
    
       private static final int XSIZE = 15;
       private static final int YSIZE = 15;
       private double x = 0;
       private double y = 0;
       private double dx = 1;
       private double dy = 1;
    }
    
    /**
       The panel that draws the balls.
    */
    class BallPanel extends JPanel
    {
       /**
          Add a ball to the panel.
          @param b the ball to add
       */
       public void add(Ball b)
       {
          balls.add(b);
       }
    
       public void paintComponent(Graphics g)
       {
          super.paintComponent(g);
          Graphics2D g2 = (Graphics2D) g;
          for (Ball b : balls)
          {
             g2.fill(b.getShape());
          }
       }
    
       private ArrayList<Ball> balls = new ArrayList<Ball>();
    }
    
    /**
       The frame with panel and buttons.
    */
    class BounceFrame extends JFrame
    {
       /**
          Constructs the frame with the panel for showing the
          bouncing ball and Start and Close buttons
       */
       public BounceFrame()
       {
          setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
          setTitle("BounceThread");
    
          panel = new BallPanel();
          add(panel, BorderLayout.CENTER);
          JPanel buttonPanel = new JPanel();
          addButton(buttonPanel, "Start",
             new ActionListener()
             {  
                public void actionPerformed(ActionEvent event)
                {
                   addBall();
                }
             });
          
          addButton(buttonPanel, "Close",
             new ActionListener()
             {
                public void actionPerformed(ActionEvent event)
                {
                   System.exit(0);
                }
             });
          add(buttonPanel, BorderLayout.SOUTH);
       }
    
       /**
          Adds a button to a container.
          @param c the container
          @param title the button title
          @param listener the action listener for the button
       */
       public void addButton(Container c, String title, ActionListener listener)
       {
          JButton button = new JButton(title);
          c.add(button);
          button.addActionListener(listener);
       }
    
       /**
          Adds a bouncing ball to the canvas and starts a thread
          to make it bounce
       */
       public void addBall()
       {
          Ball b = new Ball();
          panel.add(b);
          Runnable r = new BallRunnable(b, panel);
          Thread t = new Thread(r);
          t.start();
       }
    
       private BallPanel panel;
       public static final int DEFAULT_WIDTH = 450;
       public static final int DEFAULT_HEIGHT = 350;  
       public static final int STEPS = 1000;
       public static final int DELAY = 3;
    }
    
  49. Trương Tuấn said

    Em cám ơn Thầy rất nhiều….

  50. Hoang said

    Tương tự như bài của bạn thầy có cách nào mình dùng chuột và đẩy quả bóng đi tùy theo ý mình, cách bắt sự kiên chuột và theo thời gian quả banh sẽ chạy chậm dần và dừng lại hẳn ko ạ?

  51. NHAT said

    TOI CHAY NETBEAN 5.0 THAY LOI JAVA.LANG.NoClassDeffoundError
    BAC GIUP EM VOI

    package org.apache.poi.ss.examples;

    import org.apache.poi.xssf.usermodel.*;
    import org.apache.poi.ss.util.CellRangeAddress;
    import org.apache.poi.ss.usermodel.*;
    import org.apache.poi.ss.usermodel.Font;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;

    import java.io.FileOutputStream;
    import java.util.Calendar;
    import java.util.Map;
    import java.util.HashMap;

    /**
    * A monthly calendar created using Apache POI. Each month is on a separate sheet.
    *

     * Usage:
     * CalendarDemo -xls|xlsx 
     * 

    *
    * @author Yegor Kozlov
    */
    public class CalendarDemo {

    private static final String[] days = {
    “Sunday”, “Monday”, “Tuesday”,
    “Wednesday”, “Thursday”, “Friday”, “Saturday”};

    private static final String[] months = {
    “January”, “February”, “March”,”April”, “May”, “June”,”July”, “August”,
    “September”,”October”, “November”, “December”};

    public static void main(String[] args) throws Exception {

    Calendar calendar = Calendar.getInstance();
    boolean xlsx = true;
    for (int i = 0; i < args.length; i++) {
    if(args[i].charAt(0) == '-'){
    xlsx = args[i].equals("-xlsx");
    } else {
    calendar.set(Calendar.YEAR, Integer.parseInt(args[i]));
    }
    }
    int year = calendar.get(Calendar.YEAR);

    Workbook wb = xlsx ? new XSSFWorkbook() : new HSSFWorkbook();

    Map styles = createStyles(wb);

    for (int month = 0; month < 12; month++) {
    calendar.set(Calendar.MONTH, month);
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    //create a sheet for each month
    Sheet sheet = wb.createSheet(months[month]);

    //turn off gridlines
    sheet.setDisplayGridlines(false);
    sheet.setPrintGridlines(false);
    sheet.setFitToPage(true);
    sheet.setHorizontallyCenter(true);
    PrintSetup printSetup = sheet.getPrintSetup();
    printSetup.setLandscape(true);

    //the following three statements are required only for HSSF
    sheet.setAutobreaks(true);
    printSetup.setFitHeight((short)1);
    printSetup.setFitWidth((short)1);

    //the header row: centered text in 48pt font
    Row headerRow = sheet.createRow(0);
    headerRow.setHeightInPoints(80);
    Cell titleCell = headerRow.createCell(0);
    titleCell.setCellValue(months[month] + " " + year);
    titleCell.setCellStyle(styles.get("title"));
    sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$N$1"));

    //header with month titles
    Row monthRow = sheet.createRow(1);
    for (int i = 0; i < days.length; i++) {
    //set column widths, the width is measured in units of 1/256th of a character width
    sheet.setColumnWidth(i*2, 5*256); //the column is 5 characters wide
    sheet.setColumnWidth(i*2 + 1, 13*256); //the column is 13 characters wide
    sheet.addMergedRegion(new CellRangeAddress(1, 1, i*2, i*2+1));
    Cell monthCell = monthRow.createCell(i*2);
    monthCell.setCellValue(days[i]);
    monthCell.setCellStyle(styles.get("month"));
    }

    int cnt = 1, day=1;
    int rownum = 2;
    for (int j = 0; j < 6; j++) {
    Row row = sheet.createRow(rownum++);
    row.setHeightInPoints(100);
    for (int i = 0; i = day_of_week && calendar.get(Calendar.MONTH) == month) {
    dayCell_1.setCellValue(day);
    calendar.set(Calendar.DAY_OF_MONTH, ++day);

    if(i == 0 || i == days.length-1) {
    dayCell_1.setCellStyle(styles.get(“weekend_left”));
    dayCell_2.setCellStyle(styles.get(“weekend_right”));
    } else {
    dayCell_1.setCellStyle(styles.get(“workday_left”));
    dayCell_2.setCellStyle(styles.get(“workday_right”));
    }
    } else {
    dayCell_1.setCellStyle(styles.get(“grey_left”));
    dayCell_2.setCellStyle(styles.get(“grey_right”));
    }
    cnt++;
    }
    if(calendar.get(Calendar.MONTH) > month) break;
    }
    }

    // Write the output to a file
    String file = “calendar.xls”;
    if(wb instanceof XSSFWorkbook) file += “x”;
    FileOutputStream out = new FileOutputStream(file);
    wb.write(out);
    out.close();
    }

    /**
    * cell styles used for formatting calendar sheets
    */
    private static Map createStyles(Workbook wb){
    Map styles = new HashMap();

    short borderColor = IndexedColors.GREY_50_PERCENT.getIndex();

    CellStyle style;
    Font titleFont = wb.createFont();
    titleFont.setFontHeightInPoints((short)48);
    titleFont.setColor(IndexedColors.DARK_BLUE.getIndex());
    style = wb.createCellStyle();
    style.setAlignment(CellStyle.ALIGN_CENTER);
    style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
    style.setFont(titleFont);
    styles.put(“title”, style);

    Font monthFont = wb.createFont();
    monthFont.setFontHeightInPoints((short)12);
    monthFont.setColor(IndexedColors.WHITE.getIndex());
    monthFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
    style = wb.createCellStyle();
    style.setAlignment(CellStyle.ALIGN_CENTER);
    style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
    style.setFillForegroundColor(IndexedColors.DARK_BLUE.getIndex());
    style.setFillPattern(CellStyle.SOLID_FOREGROUND);
    style.setFont(monthFont);
    styles.put(“month”, style);

    Font dayFont = wb.createFont();
    dayFont.setFontHeightInPoints((short)14);
    dayFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
    style = wb.createCellStyle();
    style.setAlignment(CellStyle.ALIGN_LEFT);
    style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
    style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
    style.setFillPattern(CellStyle.SOLID_FOREGROUND);
    style.setBorderLeft(CellStyle.BORDER_THIN);
    style.setLeftBorderColor(borderColor);
    style.setBorderBottom(CellStyle.BORDER_THIN);
    style.setBottomBorderColor(borderColor);
    style.setFont(dayFont);
    styles.put(“weekend_left”, style);

    style = wb.createCellStyle();
    style.setAlignment(CellStyle.ALIGN_CENTER);
    style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
    style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
    style.setFillPattern(CellStyle.SOLID_FOREGROUND);
    style.setBorderRight(CellStyle.BORDER_THIN);
    style.setRightBorderColor(borderColor);
    style.setBorderBottom(CellStyle.BORDER_THIN);
    style.setBottomBorderColor(borderColor);
    styles.put(“weekend_right”, style);

    style = wb.createCellStyle();
    style.setAlignment(CellStyle.ALIGN_LEFT);
    style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
    style.setBorderLeft(CellStyle.BORDER_THIN);
    style.setFillForegroundColor(IndexedColors.WHITE.getIndex());
    style.setFillPattern(CellStyle.SOLID_FOREGROUND);
    style.setLeftBorderColor(borderColor);
    style.setBorderBottom(CellStyle.BORDER_THIN);
    style.setBottomBorderColor(borderColor);
    style.setFont(dayFont);
    styles.put(“workday_left”, style);

    style = wb.createCellStyle();
    style.setAlignment(CellStyle.ALIGN_CENTER);
    style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
    style.setFillForegroundColor(IndexedColors.WHITE.getIndex());
    style.setFillPattern(CellStyle.SOLID_FOREGROUND);
    style.setBorderRight(CellStyle.BORDER_THIN);
    style.setRightBorderColor(borderColor);
    style.setBorderBottom(CellStyle.BORDER_THIN);
    style.setBottomBorderColor(borderColor);
    styles.put(“workday_right”, style);

    style = wb.createCellStyle();
    style.setBorderLeft(CellStyle.BORDER_THIN);
    style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
    style.setFillPattern(CellStyle.SOLID_FOREGROUND);
    style.setBorderBottom(CellStyle.BORDER_THIN);
    style.setBottomBorderColor(borderColor);
    styles.put(“grey_left”, style);

    style = wb.createCellStyle();
    style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
    style.setFillPattern(CellStyle.SOLID_FOREGROUND);
    style.setBorderRight(CellStyle.BORDER_THIN);
    style.setRightBorderColor(borderColor);
    style.setBorderBottom(CellStyle.BORDER_THIN);
    style.setBottomBorderColor(borderColor);
    styles.put(“grey_right”, style);

    return styles;
    }
    }

  52. vananh said

    có ai biết lỗi Could not find or load main class ko giúp em với😦

  53. cuonghuy said

    thưa thầy!
    cho em hỏi về danh dách kiểu List.
    ví dụ em có 1 List gồm các đồi tượng là Hàng Hóa
    em dùng vòng lap for(Hanghoa item : hh.getHanghoaList) để duyệt các đồi tượng.theo kiểu này thì sẽ duyệt lần lượt từ phần tử 0
    em muốn duyệt từ phần tử thứ 3 trở đi thì làm thế nào ạ?

  54. Võ Văn Hải said

    nếu muốn vậy sao không duyệt: for(int i=3;i<hh.getHanghoaList().size();i++)?

  55. xuan tung said

    em chào thầy.Thầy cho em xin link phần mềm JDK vs Eclipse.em lên mạng dow nhưng không được

  56. Võ Văn Hải said

    SUN JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html
    Eclipse:http://www.eclipse.org/downloads/

  57. thanh said

    Thưa thầy
    Thầy có thể chỉ cho em 1 số thủ thuật code tắt trong java để viết nhanh hơn
    Ví dụ: PSVM+tab = public void main string
    em tìm mãi trên google mà không ra
    Mong thầy chỉ giáo,hoặc cho em link tham khảo

  58. minh said

    em chào thầy! thầy cho em hỏi, em đang học về html viết trên notepad, khi em sử dung load ảnh, cấu trúc đúng(đã chạy thử trên máy khác được) nhưng máy em không được, em không hiểu lỗi do đâu a!mong thầy giải thích hộ, em xin chân thành cám ơn a!

  59. Thưa thầy, em viết 1 chương trình để thực hành layout dạng GridBag như sau:
    package demo;
    import javax.swing.*;

    import java.awt.*;

    /**
    *
    * @author Administrator
    */
    class Main extends JFrame {
    JLabel l2=new JLabel(“Type”);
    JLabel l3=new JLabel(“Class name”);
    JLabel l4=new JLabel(“Res.name”);
    JLabel l5=new JLabel(“Bean name”);
    JButton b1=new JButton(“>>”);
    JButton b2=new JButton(“>>”);
    JButton b3=new JButton(“>>”);
    JButton b4=new JButton(“Cancel”);
    JButton b5=new JButton(“Next”);
    JTextField t1=new JTextField(30);
    JTextField t2=new JTextField(30);
    JTextField t3=new JTextField(30);
    JComboBox c1=new JComboBox();
    GridBagLayout gb;
    GridBagConstraints gbc;
    public Main(String title){
    super(title);
    gb=new GridBagLayout();
    setLayout(gb);
    gbc=new GridBagConstraints();
    gbc.fill=GridBagConstraints.HORIZONTAL;
    addComponent(l2,0,0,1,1);
    gbc.fill=GridBagConstraints.HORIZONTAL;
    addComponent(c1,0,1,1,3);
    gbc.fill=GridBagConstraints.HORIZONTAL;
    addComponent(l3,1,0,1,1);
    gbc.fill=GridBagConstraints.HORIZONTAL;
    addComponent(t1,1,1,1,2);
    gbc.fill=GridBagConstraints.HORIZONTAL;
    addComponent(b1,1,3,1,1);
    gbc.fill=GridBagConstraints.HORIZONTAL;
    addComponent(l4,2,0,1,1);
    gbc.fill=GridBagConstraints.HORIZONTAL;
    addComponent(t2,2,1,1,2);
    gbc.fill=GridBagConstraints.HORIZONTAL;
    addComponent(b2,2,3,1,1);
    gbc.fill=GridBagConstraints.HORIZONTAL;
    addComponent(l5,3,0,1,1);
    gbc.fill=GridBagConstraints.HORIZONTAL;
    addComponent(t3,3,1,1,2);
    gbc.fill=GridBagConstraints.HORIZONTAL;
    addComponent(b3,3,3,1,1);
    gbc.fill=GridBagConstraints.HORIZONTAL;
    addComponent(b4,6,1,1,1);
    gbc.fill=GridBagConstraints.HORIZONTAL;
    addComponent(b5,6,2,1,1);
    }
    public void addComponent(Component c, int row, int col, int nrow, int ncol){
    gbc.gridx=col;
    gbc.gridy=row;

    gbc.gridwidth=ncol;
    gbc.gridheight=nrow;

    gb.setConstraints(c,gbc);
    add(c);
    }
    @SuppressWarnings(“deprecation”)
    public static void main(String args[])
    {
    Main t=new Main(“Step 1”);
    t.setSize(600,300);
    t.show();
    t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    }
    Thế nhưng các button b4 và b5 em đã set là hiển thị trên 1 dòng và 1 cột nhưng chúng không chỉ chiếm 1 cột mà chiếm chiều dài giống t1,t2,t3… Mong thầy giúp đỡ!

  60. Thầy ơi ,
    Em tên là : Lý Phương Thiên_CDTH12A
    Trong quá trình dịch tài liệu bằng tiếng anh , và làm những ví dụ trong sách. Thì em cũng hiểu 1 số cái , nhưng em còn mơ hồn trong việc sử dụng các lớp . Vi dụ : phuong phap public stactic void aaa() va public void giống hay khác nhau ,
    Hoặc trong việc sử dụng interface , thì em đã hiểu nhưng mà em lại không biết áp dụng vào những bài tập.
    Thầy có tài liệu java tiếng việt nào không , tài liệu mà hướng dẫn cách sử dụng class , va intefaca không vậy thầy.
    Em xin cảm ơn thầy trước

  61. Đặng Trung Nguyên said

    Em chào thầy. Em có một số vấn đề về giao diện như sau:

    trong một JFrame em có 2 button: btn1,btn2. Em muốn khi ngừời dùng nhấn phiếm Enter là thực thi hàm của btn1 và phiếm 2 là thực thi hàm của btn2 thì làm thế nào thưa thầy. Em đã thử dùng hàm btn1.setMnemonic(KeyEvent.VK_Enter); và btn2.setMnemonic(KeyEvent.VK_1); như một số trang đã hướng dẫn nhưng sao lại không đc thưa thầy.

    vấn đề thứ 2: Về vấn đề định dạng code html trong đây là sao thưa thầy. và nếu dùng đc thế này thì thầy có tài liệu gì nó mong thầy gởi cho em, em xin cảm ơn.

    String htmlButton = “HTML Button” + “Multi-line”;
    JButton button4 = new JButton(htmlButton);

    mong chờ trả lời từ thầy. Học trò của thầy.

  62. Lê Đăng Tỉnh said

    Thầy ơi cho em hỏi thêm một tí nữa Union pattern nó là cái gì? Mẫu đó áp dụng trong trường hợp nào? Mô hình của nó ra sao? một ứng dụng nhỏ có sữ dụng union pattern. Nếu được thì thầy cho em hỏi thêm so sánh với các pattern khác cùng loại hoặc so sánh ứng dụng khi có và không áp dụng Union pattern thì như thế nào? em cảm ơn thầy nhiều ạ

  63. Vo Minh Tri said

    Dạ thầy ơi em là sinh viên Khoa học tự nhiên, em đang làm đồ án Mail Client bằng java.Đọc hai bài viết gửi và nhận mail của thầy em đã thựcc hiện đựơc nhưng hộp thư em trên gmail có tổng cộng 200 thư nếu mình muốn chỉ lấy những thư chưa đọc (chứ đợi load hết 200 thư thì lâu quá). Mong thầy cho lời khuyên giúp em
    Em cảm ơn thầy nhiều ạ!

  64. hoa said

    thay giup em voi,bai tap nay em 0 biet lam,thay co the chi em o,code em viet chi duoc nhung phan don gian
    Viết chương trình quản lý nhân viên cho công ty X, biết rằng:
    1. Thông tin của một nhân viên gồm có:
    a. Số Chứng Minh Nhân Dân (theo chuẩn của Việt Nam)
    b. Họ tên
    c. Ngày tháng năm sinh
    d. Địa chỉ
    e. Giới tính (Nam/Nữ)
    f. Email (theo chuẩn chung quốc tế)
    g. Số điện thoại (theo chuẩn SIM điện thoại của Việt Nam)
    h. Lương tháng (tính theo USD)
    i. Quỹ sinh hoạt chung hằng tháng
    2. Hằng tháng nhân viên phải đóng quỹ sinh hoạt chung theo bảng
    sau
    Mức lương Quỹ
    <= 200USD 0% lương
    200USD < lương <= 400USD 1% lương
    400USD < lương 600USD 3% lương
    3. Thông tin của nhân viên được nhập từ bàn phím. Yêu cầu: phải
    kiểm tra dữ liệu đầu vào.
    4. Tính quỹ sinh hoạt chung mà mỗi nhân viên phải đóng hàng
    tháng.
    5. Tính tổng quỹ sinh hoạt chung của toàn công ty X trong tháng
    6. Lập báo cáo nhân sự bằng file text (.txt) cho biết thông tin: Số
    CMND, họ tên, địa chỉ, giới tính của toàn nhân viên trong công ty.
    Mỗi thông tin của nhân viên ghi trên một dòng.
    7. Lập báo cáo kế toán cho toàn công ty, thông tin gồm: Số CMND,
    lương tháng, tiền quỹ sinh hoạt chung của tháng đó. Ghi những
    thông tin này ra file nhị phân.
    8. Lập sổ địa chỉ cho công ty dưới dạng file excel (.xls). Thông tin
    cần có là Số CMND, họ tên, địa chỉ, email, số điện thoại. Mỗi
    thông tin của mỗi nhân viên ghi trên một row của file excel.

  65. tranthihoangyen93 said

    thầy ơi!
    thầy có thể chỉ cho em làm sao có thể làm game tìm điểm khác nhau giữa 2 hình trong java ko thầy. Vì em đang làm một đồ án java mà các phần ý tưởng khác đã xong chỉ còn có phần này thì em ko biết. Mong thầy có thể giúp đỡ cho em !

  66. thay co soucre lap trinh phan mem xem boi tu vi ? or lt giao dien atm + ngon ngu java giao dien form client server

  67. Tan said

    Chào thầy!
    Thầy giúp em khắc phục lỗii: khi chạy project trong netbean thì ko bị lỗi nhưng khi build ra file jar thì bị lỗi,

  68. Tan said

    Chào thầy!
    Thầy giúp em khắc phục lỗi: khi chạy project trong netbean thì không bị lỗi font tiếng việt nhưng khi build ra file jar thì bị lỗi font tiếng việt.

  69. Tan said

    Em tìm được cách khắc phục rồi thầy: tạo biến môi trường JAVA_TOOL_OPTIONS với value Dfile.encoding=UTF8

  70. ngochien said

    Em là người mới học Java,Thầy có thể hướng dẫn giúp em bài này được không thầy, e cám ơn thầy!
    Tạo một dự án (application) có 2 gói:
    -Gói 1: package_A: gồm (các) lớp chứa các phương thức để tính: cộng, trừ, hai số.
    -Gói 2: package_B: gồm (các) lớp chứa phương thức sau:
    Tính phép nhân a*b = a+a+…+a(n lần): thông qua lời gọi hàm cộng ở gói package_A
    Sử dụng hai phương thức cộng ở package_A và nhân ở cùng gói để tính biểu thức S=1*2+2*3+…*(n+1)*n.

  71. Shibazakura Nguyen said

    Dạ em chào thầy ạ!
    Thầy cho em hỏi: cho một quả bóng chuyển động trong một vùng giới hạn làm sao mà cứ 20s thì trái banh lại chyển màu từ đỏ sang xanh được z thầy?
    em cảm ơn thầy ạ

  72. BinhHT said

    Thầy cho em hỏi:
    Viết chương trình bouncing ball với các điều kiện sau:
    – Điều chỉnh được số lượng quả bóng
    – Ghi lại quỹ đạo bay vào file
    – Xuất ra quỹ đạo bay đã ghi

  73. mrnguy3n said

    em chào thầy.
    hiện tại em cần đang học về java. Em làm code có 1 vấn đề xuất hiện :em cần tạo 1 mảng trong đó mỗi thành phần của mảng là 1 mảng.
    thầy có thể cho em ví dụ luôn được không ạ.

  74. Võ Văn Hải said

    mảng của 1 mảng là jagged array. Ví dụ về 1 mảng kiểu nguyên. đổi kiểu khác theo yêu cầu của bạn
    int [][]a=new int[10][];
    a[0]=new int[5];
    a[1]=new int [2];
    //…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: