New NetBeans Resources
Tập hợp khá nhiều tài nguyên về NetBeans 4.1. Check here.
How a n00b learns Java, drinks Java and feels Java? That would be an interesting experience.
Please use Firefox to view our blog if Microsoft Internet Exlorer doesn't display UTF-8 character correctly.
Ứng dụng là một cái từ thật là to mặc dù tôi cũng chẳng biết dùng từ gì để chỉ nó nữa. Tôi tạo ra một cái Swing Interface, bắt đầu từ cái JFrame có bố là Frame và ông nội là thằng Window. Nhớ là Frame là một window có thể định lại cỡ, có title bar và có nút tắt, thu nhỏ/phóng to. Tôi sẽ đặt thẳng vào Frame này một nhãn JLabel và một nút JButton theo Layout Manager là Bố cục dòng chảy Flow.
import javax.swing.*;
import java.awt.*;
public class MyFirstSwingApp {
/**
* Creates a new instance of MyFirstSwingApp
*/
public MyFirstSwingApp() {
createFrame();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
MyFirstSwingApp Frame = new MyFirstSwingApp();
}
public void createFrame() {
//Create and set up the window.
JFrame frame = new JFrame("HelloWorldSwing Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new FlowLayout());
JButton button = new JButton("It is a Button");
frame.getContentPane().add(button);
JLabel label = new JLabel("This is a Label");
frame.getContentPane().add(label);
frame.pack();
frame.setVisible(true);
}
}
public class MyFirstSwingApp implements ActionListener {import java.awt.event.*;
addActionListenermà ta sẽ buộc phải định nghĩa lại (override) trong lớp thực thi giao diện đó không thì trình biên dịch sẽ la lối om sòm là lớp của chú đâu phải là lớp abstract, mà không phải thế thì sao ko định nghĩa lại
addActionListenercho vui làng xóm. Thế là tớ phải thêm một phương thức nữa cho đẹp cả 2 họ.
public void actionPerformed(ActionEvent e) {
}
addActionListener(this)(this)trên đối tượng của Component đó. Nghĩa là tớ muốn khi người ta bấm nút thì sự kiện đó sẽ được gửi đi ra cho phương thức xử lý
actionPerformedthì tớ cần dùng
addActionListener(this)trên đối tượng cụ thể cần theo dõi đó. May quá tớ chỉ có tạo một nút nên tớ chỉ việc thêm dòng:
button.addActionListener(this);
actionPerformedđược thực thi liền.
Lần trước mới ngửi qua một chút Swing, lần này có thời gian để nghía lại một tí. Đặc biệt đáng chú ý là cây phân cấp lớp của Swing. Containment hierarchy/Class Hierarchy trong Swing là một khái niệm cần nhớ:

A resizable, movable window with title bar and close button. Usually it contains Panels.Đó chính là lý do mà JFrame kế thừa từ lớp Window trong khi các component khác lại chỉ kế thừa từ siêu lớp của Window là Container.
A window without a title bar or move controls. The program can move and resize it, but the user cannot. Free standing Window, not inside any other Window. It must have a parent Frame mentioned in the constructor.A definition on JPanel:
A region internal to a JFrame or another JPanel. Used for grouping components together. Optionally bounded by a visible border. Lives inside some enclosing Container.A definition on Container:
These are the basis on which all the other windows are built. They manage the child Components and LayoutManager. They are missing an addNotify method to create the peer object, so can't appear on screen. You don't normally instantiate Containers directly, but some subclass of them.
Hôm nay, NetBeans 4.1 đã ra xuất xưởng. Với khả năng hỗ trợ Java 5.0 và J2EE mạnh mẽ, NetBeans sẽ là một trong những winner trên thị trường IDE hiện nay. Mặc dù Eclipse phổ biến hơn nhưng Linux sẽ là mảnh đất đầu tiên mà NetBeans đánh bại Eclipse. Tôi thích Eclipse cho PHP nhưng với Java thì tôi thú NetBeans 4.1 hơn. Hi vọng NetBeans 4.2 sẽ hỗ trợ nhiều ngôn ngữ hơn trong đó có PHP, Groovy. Ngoài ra tôi cũng mong NetBeans 4.2 sẽ hỗ trợ xây dựng UML như của JBuilder 2005.
Javadoc là một tài liệu tham khảo vô giá. Nhiều khi bạn sao chép mã từ đâu đó về để đọc và bất thình lình có một API quái quỷ nào đó xuất hiện mà bạn chẳng hiểu chúng làm cái gì. Nếu đó là các API của J2SDK thì bạn có thể tra cứu trong Java Documentation. NetBeans 4.1 cho bạn sét chúng ngay trong IDE và tìm kiếm API đó bằng việc bôi đen và ấn Shift+F1 (hay thủ công hơn là vào menu Tools -> Javadoc Index Search). Để set:
Casting hay chuyển kiểu là một kĩ thuật thường gặp nhưng cần có 2 điểm cần chú ý:
+ Bạn có thể thực hiện chuyển kiểu giữa các primitives typesNếu bây giờ tôi có một kiểu Int là i = 1. Tôi muốn chuyển nó sang kiểu String để thực hiện việc gán nó vào một chuỗi. Bạn không thể làm:
+ Bạn có thể thực hiện chuyển kiểu giữa các đối tượng dựa trên quan hệ kế thừa
Bạn có thể dùng lớp bao Wrapper class để thực hiện việc chuyển đổi:int i=10;
String st= new String();
st=(String)i;
hoặc một tiểu xảo tận dụng khả năng tự chuyển đổi khi kết hợp 1 chuỗi với một số làString st = Integer.toString(i);
string = String.valueOf(i);
st = ""+i;