Jump to content

Welcome to [ iT ] Forums
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. If you already have an account, login here - otherwise create an account for free today!
Hình ảnh

Học Java qua các ví dụ cụ thể

* * * * * 2 Bình chọn

  • Please log in to reply
63 replies to this topic

#21
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
CHƯƠNG 2 - JAVA VÀ LẬP TRÌNH GIAO DIỆN BẰNG SWING
Đã đến lúc bạn nên sử dụng một IDE để công việc của mình nhanh chóng và dễ dàng hơn. Applet đã trở thành đồ cổ, chúng ta nhảy luôn sang AWT - Swing
Bài 1 - Mở đầu về Swing
Chương trình này sẽ tạo một JFrame đơn giản nhất

import javax.swing.JFrame;
class HelloWorldSwing
{
		public static void main(String[] a)
		{
				JFrame frame=new JFrame("Main Frame");//Main Frame la ten cai cua so
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//ham dong cua so lai
				JLabel label=new JLabel("Hello Everybody, label contain context");//mot doi tuong do hoa
				frame.getContentPane().add(label);//dua doi tuong do hoa vao trong frame
				frame.pack();//"dong goi" lai toan bo trinh do hoa
				frame.setVisible(true);//hien thi trinh do hoa ra man hinh
		}
}
Đây là một Frame đơn giản khác, nhưng có thể dùng dễ dàng cho việc mở rộng chương trình

import javax.swing.JFrame;
import java.awt.*;
class Execute extends JFrame
{
		Container container = getContentPane();
		public Execute(String title)
		{
				super(title); //tuong duong JFrame(title)
				Label label=new Label("Hello Everybody, label contain context");
				container.add(label);
		}
	  public static void main(String a[])
	  {
				Execute exe = new Execute("Frame");
				exe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				exe.pack();
				exe.setVisible(true);
		}
}

Hỗ trợ tiếng Việt
Giả sử bạn muốn nút bấm của bạn có dòng "Việt Nam" và bạn không biết in như thế nào, chương trình sau sẽ giúp bạn
JButton b=new JButton("Vi\u1EC7t Nam");
\u1EC7 là mã Unicode của kí tự ệ mà Java hỗ trợ. Tất cả kí tự Việt đều được hỗ trợ trong Latin và Latin Extend
Lưu ý là chỉ có javax.swing mới hỗ trợ, java.awt không hỗ trợ
<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#22
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 2 - Cài đặt bộ nghe và sự kiện cho các đối tượng đồ họa
Các đối tượng đồ họa sở dĩ có thể hoạt động được là nhờ có các bộ nghe "nghe" các hành động mà người dùng tương tác với chuột hay bàn phím, và từ đó cho ra các sự kiện tương ứng.
Trong ví dụ dưới đây ta có class EventQuit là một bộ nghe, bộ nghe này thực hiện phương thức actionPerformed chính là chứa những sự kiện của bộ nghe đó. Đối tượng eventQuit là một instance của class EventQuit. Để cài đặt bộ nghe này cho đối tượng đồ họa button ta dùng phương thức addActionListener.

import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
class Core extends JFrame
{
	  Container container = getContentPane();
	  public Core(String title)
	  {
				super(title);
				Button button = new Button("My button");
				EventQuit eventQuit=new EventQuit();
				button.addActionListener(eventQuit);
				container.add(button);
	  }
	  public static void main(String a[])
	  {
			 Core exe = new Core("Frame");
			 exe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			 exe.pack();
			 exe.setVisible(true);
	  }
		class EventQuit implements ActionListener
		{
				public void actionPerformed(ActionEvent e)
				{
						System.exit(0);
				}
		}
}

Bây giờ, nếu ta muốn rút gọn, cài đặt bộ nghe và hành động trực tiếp, ta làm như sau

import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
class Core
{
		public static void main(String args[])
		{
				JFrame frame = new JFrame("My frame");
				final JButton button = new JButton("My button");
				button.addActionListener(new ActionListener()
				{
						public void actionPerformed(ActionEvent e)
						{
								if(e.getSource()==button) System.exit(0); //nếu event này có source do button sinh ra
						}
				});
				frame.add(button);
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.pack();
				frame.setVisible(true);
		}
}

<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#23
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 3 - setLayout(null) đi đôi với setBounds
setLayout mạnh nhất trong Swing là setLayout(null) cho đối tượng add, còn đối với đối tượng bị add thì setBounds, cú pháp setBounds(x,y,width,height)
Trên monitor, Java tính điểm có tọa độ (0,0) là điểm trái trên cùng. Sau đó trục hoành (x) là chiều ngang monitor từ trái sang phải và trục tung (y) là chiều dọc monitor từ trên xuống dưới
Phương thức này sẽ tạo ra một hình chữ nhật ảo bao quanh đối tượng bị add, hình chữ nhật này có tọa độ góc đầu tiên là (x,y) và dài width cao height. Ví dụ như bài sau:

import javax.swing.JFrame;
import java.awt.*;
class Core
{
		public static void main(String args[])
		{
				JFrame frame = new JFrame("My frame");
				frame.setLayout(null);
				JButton b1 = new JButton("Button 1");
				b1.setBounds(0,0,100,25);
				frame.add(b1);
				JButton b2 = new JButton("Button 2");
				b2.setBounds(100,0,100,25);
				frame.add(b2);
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.setVisible(true);
		}
}

Như vậy là chúng ta đã setLayout(null) cho frame và lần lượt setBounds (kích thước cũng như vị trí) cho 2 button. Vậy để set kích thước cũng như vị trí cho chính frame thì dùng 2 phương thức sau:

import javax.swing.JFrame;
import java.awt.*;
class Core
{
		public static void main(String args[])
		{
				JFrame frame = new JFrame("My frame");
				frame.setLayout(null);
				JButton b1 = new JButton("Button 1");
				b1.setBounds(0,0,100,25);
				frame.add(b1);
				JButton b2 = new JButton("Button 2");
				b2.setBounds(100,0,100,25);
				frame.add(b2);
				frame.setLocation(200,100);
				frame.setSize(200,60);
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.setVisible(true);
		}
}

Bài này y chang bài trên, có khác là giờ đây vị trí điểm đầu của frame đã được xác định bằng setLocation, Nếu không setLocation, mặc định là (0,0) còn kích thước được xác định bằng setSize. Lưu ý là 200=chiều dài 2 cái button cộng lại còn 60=chiều rộng button + chiều rộng thanh ban đầu (=35).
<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#24
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 4 - setLayout không phụ thuộc phân giải màn hình
Với các ứng dụng nhỏ thì chưa cần quan tâm lắm. Với các ứng dụng trung bình và lớn thì ứng dụng "co giãn" tùy theo độ phân giải sẽ là lợi thế lớn. Ta có thể lấy độ phân giải hiện hành và tùy biến ứng dụng như sau:

import javax.swing.JFrame;
import java.awt.*;
public class Core
{
		public static void main(String[] args)
		{
				Toolkit kit = Toolkit.getDefaultToolkit();
				Dimension screenSize = kit.getScreenSize();
				int screenWidth = screenSize.width;
				int screenHeight = screenSize.height;
				JFrame frame = new JFrame("My frame");
				frame.setSize(screenWidth,screenHeight);
				frame.setResizable(false);
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.setVisible(true);
		}
}


Để người dùng không thay đổi được size của mình, dùng frame.setResizable(false)
<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#25
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 5 - Các đối tượng đồ họa cơ bản của Java
* Button

Button button=new Button("OK");
add(button);
hoặc add(new Button("OK"));
Button sử dụng ActionListener để nghe sự kiện và truyền hành động
* Label
Label label=new Label("The sum of values here:");
Label là nhãn
* Panel
Panel panel=new Panel();
Panel là khung chứa.
<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#26
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 6 - Checkbox
Checkbox dùng để chuyển đổi trạng thái (state) giữa yes/no hay true/false. Khi state là true thì ô đã được đánh dấu. Có 3 instructor thường dùng là:
Checkbox() Checkbox(String label) Checkbox(String label,boolean state) với label hiển thị nhãn còn state là true/false
Để xác lập state cho một Checkbox ta dùng phương thức setState(true)
Để lấy state hiện hành của một Checkbox ta dùng phương thức getState()
Để xử lí tình huống của Checkbox khi nó thay đổi trạng thái, ta phải cho nó implements giao diện ItemListener, và bên trong nó có phương thức itemStateChanged(ItemEvent e). Còn để Checkbox thực hiện những hành động của lớp ấy thì ta phải dùng phương thức addItemListener.

import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
class Core
{
		public static void main(String args[])
		{
				JFrame frame = new JFrame("My frame");
				Checkbox checkbox=new Checkbox("Documents",false);
				checkbox.addItemListener(new ItemListener()
				{
						public void itemStateChanged(ItemEvent e)
						{
								System.out.println("Changed");
						}
				});
				frame.add(checkbox);
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.pack();
				frame.setVisible(true);
		}
}
Ở ví dụ này thì mỗi lần bạn thay đổi trạng thái Checkbox, màn hình Console sẽ in ra câu "Changed" Bây giờ nếu bạn muốn màn hình in ra chỉ khi nào nó được chọn mà thôi, thì sửa lại phương thức itemStateChanged như sau
if(e.getStateChange()==ItemEvent.SELECTED) System.out.println("Changed");
SELECTED và DESELECTED là 2 hằng số biển diễn trạng thái true hay false của Checkbox
<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#27
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 7 - Checkbox nhiều tùy chọn (CheckboxGroup)
Đầu tiên, hãy tạo một nhóm Checkbox như sau CheckboxGroup g=new CheckboxGroup();
Sau đó đưa các Checkbox muốn đưa vào nhóm Checkbox đó như sau
Checkbox c1=new Checkbox("Option 1",g,true);
Checkbox c2=new Checkbox("Option 2",g,false);
Checkbox c2=new Checkbox("Option 2",g,false);
Cả 3 cái cùng mang giá trị false cũng được, nhưng nếu là true thì chỉ được một cái true
Bài tập sau sẽ tạo một CheckboxGroup có 3 Checkbox. Để listener biết là Checkbox nào được chọn, ta dùng phương thức getItem (trả về Object) Lưu ý là để cả 3 Checkbox cùng hiển thị trên frame, ta dùng Panel

import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
class Core
{
		public static void main(String args[])
		{
				JFrame frame = new JFrame("My frame");
				CheckboxGroup g=new CheckboxGroup();
				Checkbox c1=new Checkbox("Option 1",g,true);
				Checkbox c2=new Checkbox("Option 2",g,false);
				Checkbox c3=new Checkbox("Option 3",g,false);
				MyItemListener listener = new MyItemListener();
				c1.addItemListener(listener);
				c2.addItemListener(listener);
				c3.addItemListener(listener);
				Panel panel=new Panel();
				frame.add(panel);
				panel.add(c1);
				panel.add(c2);
				panel.add(c3);
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.pack();
				frame.setVisible(true);
		}
}
class MyItemListener implements ItemListener
{
		public void itemStateChanged(ItemEvent e)
		{
				if(e.getStateChange()==ItemEvent.SELECTED)
				{
						Object temp=e.getItem();
						String s=(String)temp;
						System.out.println(s);
				}
		}
}

Lưu ý (String)temp thực ra là lấy cái label của Object temp. 2 lệnh có thể thay thế bằng 1 lệnh String s=(String)e.getItem();
<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#28
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 8 - Choice
Choice myChoice = new Choice();
sau đó đưa mục chọn vào Choice như sau
myChoice.addItem("Red");
myChoice.addItem("Green");
myChoice.addItem("Blue");
Khi đó 3 mục chọn được đánh số lần lượt là 0,1,2 (đặt là i: thứ tự mục chọn)
Để bỏ mục chọn nào ra khỏi Choice, ta dùng myChoice.remove(i) với i là thứ tự mục chọn
Để bỏ tất cả mục chọn khỏi Choice, ta dùng myChoice.removeAll()
Để chọn mục chọn nào trong Choice, ta dùng muChoice.select(i)
Lưu ý là ta có thể dùng số thứ tự hoặc nhãn đều được, ví dụ myChoice.remove("Blue") hay myChoice.remove(2) đều được. Và nếu có 10 mục chọn có nhãn là "Blue" thì myChoice.remove("Blue") chỉ xóa mục chọn đầu tiên nó tìm thấy

import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
class Core
{
		public static void main(String args[])
		{
				JFrame frame = new JFrame("My frame");
				Choice myChoice = new Choice();
				myChoice.addItem("Red");
				myChoice.addItem("Green");
				myChoice.addItem("Blue");
				myChoice.addItemListener(new ItemListener()
				{
						public void itemStateChanged(ItemEvent e)
						{
								if(e.getStateChange()==ItemEvent.SELECTED)
								{
										String s=(String)e.getItem();
										System.out.println(s);
								}
						}
				});
				frame.add(myChoice);
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.pack();
				frame.setVisible(true);
		}
}

<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#29
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 9 - List
Với Checkbox, ta chỉ có thể chọn giữa 2 trạng thái true/false của một đối tượng. Với CheckboxGroup và Choice, ta chỉ có thể một trong các đối tượng. Với List, ta có thể chọn một vài đối tượng, thậm chí chọn hết.
Mặc định của một List là chỉ hiển thị tối đa 4 phần tử. Các phương thức khởi tạo:
List() sẽ tạo một List mỗi lần chọn chỉ chọn được một hàng (đơn chọn)
List(int num) sẽ tạo một danh sách mỗi lần chọn mỗi lần chọn chỉ chọn được một hàng, nhưng sẽ hiển thị num hàng chứ không phải là 4 như mặc định
List(int num,boolean multiMode) y chang cái trên, nhưng thêm là mỗi lần chọn được chọn nhiều phần tử một lúc (nếu multiMode là true) (đa chọn)
Như vậy List(7) và List(7,false) là như nhau, hiển thị 7 hàng một lúc và mỗi lần chọn chỉ chọn được một hàng
Để add phần tử vào List:
List myList=new List(3,true);
myList.add("Pascal");
myList.add("C\\C++");
myList.add("VB");
myList.add("Java");
Các phần tử cũng được đánh thứ tự từ 0. Để thêm phần tử vào vị trí nào ta đưa vào chỉ số ta thích, ví dụ
myList.add("Assembler",0);
Để thay thế một phần tử tại vị trí nào ta dùng phương thức
myList.replaceItem("VB.NET",2); //VB bị thay bằng VB.NET
Để xóa một phần tử nào ta dùng phương thức remove(i)
myList.remove(3); hay myList.remove("Java"); đều được. Và nếu có 10 mục chọn có nhãn là "Java" thì myList.remove("Java") chỉ xóa phần tử đầu tiên nó tìm thấy
Để xóa tất cả ta dùng myList.removeAll();
Để chọn phần tử và bỏ chọn phần tử ta dùng select(i) và deselect(i)
<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#30
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 10 - Làm việc với List
* Với List đơn chọn

Để biết được phần tử nào đã được chọn, ta dùng 2 phương thức int getSelectedIndex() và String getSelectedItem()
int getSelectedIndex() sẽ trả về số thứ tự của phần tử đã được chọn, nếu không có phần tử nào thì trả về -1
String getSelectedItem() sẽ trả về label của phần tử đã được chọn, nếu không có phần tử nào thì trả về ""
final List l=new List();
l.add("Pascal");
l.add("C\\C++");
l.add("VB");
l.add("Java");
frame.add(l);
l.addItemListener(new ItemListener()
{
		public void itemStateChanged(ItemEvent e)
		{
				System.out.println(l.getSelectedIndex()+" "+l.getSelectedItem());
		}
});

* Với List đa chọn
Để biết được những phần tử nào đã được chọn, ta dùng 2 phương thức int[] getSelectedIndexs() và String[] getSelectedItems()
int[] getSelectedIndexs() là một mảng sẽ trả về những số thứ tự của các phần tử đã được chọn, nếu không có phần tử nào thì trả về -1
String[] getSelectedItems() là một mảng sẽ trả về những label của các phần tử đã được chọn, nếu không có phần tử nào thì trả về ""
final List l=new List(3,true);
l.add("Pascal");
l.add("C\\C++");
l.add("VB");
l.add("Java");
frame.add(l);
l.addItemListener(new ItemListener()
{
		public void itemStateChanged(ItemEvent e)
		{
				int[] a=l.getSelectedIndexs();
				String[] b=l.getSelectedItems();
				for(int i=0;i<a.length;i++)
						System.out.println(a|i|);
				for(int j=0;j<b.length;j++)
						System.out.println(b[j]);
		}
});

<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#31
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 11 - TextField và TextArea
* TextField

Có 4 phương thức khởi tạo
TextField() không thêm gì cả
TextField(String s) với s là chuỗi ban đầu xuất hiện trên TextField (ví dụ "Input your name here")
TextField(int num) với num là độ dài TextField
TextField(String s,int num) với s là chuỗi ban đầu xuất hiện trên TextField và num là độ dài TextField
* TextArea
Có 4 phương thức khởi tạo
TextArea() không thêm gì cả
TextArea(String s) với s là chuỗi ban đầu xuất hiện trên TextArea
TextArea(int row,int column) với row và column là số hàng và cột trên TextField
TextField(String s,int row,int column) là đầy đủ nhất kết hợp 2 phương thức khởi tạo trên
* Các phương thức của TextField và TextArea
Đưa nội dung văn bản vào bằng void setText(String txt)
Lấy nội dung văn bản ra bằng String getText()
Lấy nội dung văn bản đang được đánh dấu (bôi đen) ra bằng String getSelectedText()
Để người dùng không thể thay đổi nội dung bằng void setEditable(false) (mặc định là true)
Đặc biệt là TextField có một phương thức mà TextArea không có, đó là void setEchoChar(char c). Ví dụ setEchoChar('*') thì phương thức này sẽ khiến cho tất cả kí tự nhập vào TextField đều chỉ hiển thị là kí tự '*' (rất hữu dụng khi nhập password)
* Phương thức dùng chung với TextField
Giả sử nếu bạn muốn làm ra một chương trình bảng tính, dữ liệu nhập vào TextField, bây giờ muốn chuyển dữ liệu ấy ra số thực để tính toán
s=textField.getText();
value1=Float.parseFloat(s);
Tương tự với Byte.parseByte,Integer.parseInt,Double.parseDouble,...
<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#32
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 12 - Scrollbar (thanh trượt)
Scrollbar được cập nhật theo 3 tình huống unit,block và absolute
- Khi người dùng click chuột vào mũi tên ở 2 đầu Scrollbar thì unit nảy sinh, thanh trượt sẽ tự động trừ đi hay cộng thêm vị trí của con trượt 1 đơn vị (ta có thể thay đổi giá trị này, mặc định là 1)
- Khi người dùng click chuột vào khoảng giữa thanh trượt và vị trí hiện hành thì block nảy sinh, con trượt sẽ dịch chuyển một khoảng là block
- Khi người dùng nắm vào vị trí hiện tại của con trượt và lôi (drag) nó từ vị trí này sang vị trí khác, absolute nảy sinh
* Khởi tạo thanh trượt
Scrollbar() là đơn giản nhất, mặc định là thanh trượt đứng
Scrollbar(int orientation) với orientation là Scrollbar.HORIZONTAL (ngang) hay Scrollbar.VERTICAL (đứng)
Scrollbar(int orientation,int position,int block,int min,int max) là đầy đủ nhất, ví dụ Scrollbar(Scrollbar.HORIZONTAL,50,15,0,100) tức là thanh trượt ngang, phạm vi từ 0 đến 100, vị trí ban đầu của con trượt là 50 (giữa thanh) khi tình thuống block xảy ra thì con trượt di chuyển 15
* Các phương thức của thanh trượt
Để thay đổi giá trị unit (mặc định là 1) ta dùng setUnitIncrement(int unit) với unit mới
Để thay đổi giá trị block ta dùng setBlockIncrement(int block) với block mới
Để biết vị trí hiện hành của con trượt ta dùng int getValue()
* Viết bộ nghe và hành động cho thanh trượt
Để xử lí tình huống của Scrollbar khi nó thay đổi trạng thái, ta phải cho nó implements giao diện AdjustmentListener, và bên trong nó có phương thức adjustmentValueChanged(AdjustmentEvent e). Còn để Scrollbar thực hiện những hành động của lớp ấy thì ta phải dùng phương thức addAdjustmentListener.
Tuy vậy, một thanh trượt thì mỗi khi tác động đến nó, nó phải "cuộn" một cái gì đấy. Muốn AdjustmentListener đáp ứng mỗi khi ta "cuộn" thì cần AdjustmentEvent e biết được vị trí con trượt đang ở đâu, ta dùng e.getValue(). Ví dụ sau là thanh trượt và TextField

import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
class Core
{
		public static void main(String args[])
		{
				JFrame frame = new JFrame("My frame");
				Panel p=new Panel();
				frame.add(p);
				Scrollbar s=new Scrollbar(Scrollbar.HORIZONTAL,0,10,0,100);
				p.add(s);
				final TextField t=new TextField(100);
				t.setEditable(false);
				p.add(t);
				s.addAdjustmentListener(new AdjustmentListener()
				{
						public void adjustmentValueChanged(AdjustmentEvent e)
						{
								int currentPos=e.getValue();
								String text="";
								for(int i=0;i<currentPos;i++) text+='*';
								t.setText(text);
						}
				});			 
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.pack();
				frame.setVisible(true);
		}
}
Bây giờ thì mỗi lần bạn kéo con trượt thì kí tự '*' lạy thay đổi trong TextField t.
<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#33
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 13 - Các đối tượng khung chứa (container) và bộ quản lí trình bày (layout manager)
Khung chứa nói nôm na là những cái khung tranh bạn cần để dán những nét vẽ (đối tượng đồ họa) của bạn lên đó. Và để sắp xếp các đối tượng này trên khung chứa thì ca cần tới bộ quản lí trình bày.
- Khung chứa mà bạn đã quen thuộc là Frame. Nó giống như cửa sổ của Windows và chứa toàn bộ ứng dụng của bạn
- Một khung chứa khác mà bạn đã biết qua là Panel. Nó giống như một cái bảng hiển thi đầy đủ các thành phần GUI mà bạn muốn tống lên Frame
- Những cái còn lại sẽ học sau. Tất cả các lớp Frame,Panel,... đều là con của lớp Container
* Các phương thức của Container (các phương thức chung của các đối tượng khung chứa)
Component add(Component c) đưa một đối tượng c vào khung chứa. Ví dụ frame.add(panel);
void remove(Component c) đưa một đối tượng c ra khỏi khung chứa. Ví dụ frame.remove(panel);
<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#34
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 14 - Nhắc lại về JFrame
Phần 1 đã nói về JFrame, bây giờ chỉ nhắc lại

import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
class Core
{
		public static void main(String args[])
		{
				//frame khong phu thuoc do phan giai man hinh
				Toolkit kit = Toolkit.getDefaultToolkit();
				Dimension screenSize = kit.getScreenSize();
				int screenWidth = screenSize.width;
				int screenHeight = screenSize.height;
				int frameWidth = 200;
				int frameHeight = 60;
				JFrame frame = new JFrame("My frame");
				frame.setLayout(null);
				frame.setLocation((screenWidth-frameWidth)/2,(screenHeight-frameHeight)/2);
				frame.setSize(frameWidth,frameHeight);
				frame.setResizable(false);
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

				//tao Button Exit cai dat phuong thuc hanh dong qua class rieng
				Button b1 = new Button("Exit");
				b1.setBounds(0,0,100,25);
				frame.add(b1);
				EventQuit eventQuit=new EventQuit();
				b1.addActionListener(eventQuit);

				//tao Button About cai dat phuong thuc hanh dong truc tiep
				final Button b2 = new Button("About");
				b2.setBounds(100,0,100,25);
				frame.add(b2);
				b2.addActionListener(new ActionListener()
				{
						public void actionPerformed(ActionEvent e)
						{
								if(e.getSource()==b2) System.out.println("Made in Vietnam");
						}
				});
				frame.setVisible(true);
		}
}
class EventQuit implements ActionListener
{
		public void actionPerformed(ActionEvent e)
		{
				System.exit(0);
		}
}
Bài trên đã dùng lại các kiến thức đã học trước đây: setLayout(null) và setBounds, đặt ứng dụng giữa màn hình và không phụ thuộc phân giải màn hình nhờ dùng Toolkit, 2 cách cài đặt phương thức hành động qua class riêng và cài đặt trực tiếp.
<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#35
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 15 - Tạo và add hàng loạt button
Bạn hãy cứ tưởng tượng nếu bạn phải add khoảng 30 button vào Frame của mình, bạn phải viết khoảng 30 câu lệnh khởi tạo, add rất là mệt. Hãy để máy tự động làm cho bạn, chỉ với vài vòng lặp. Bạn cần dùng một bảng String để lưu những label của button và một mảng Button để lưu chính những button. Đồng thời cũng dựa vào mảng Button đấy để cài đặt phương thức hành động

import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
class Core extends JFrame implements ActionListener
{
		Panel p=new Panel();
		final String[] a={"File","Edit","View","Insert","Format","Table","Windows","Help"};
		final Button[] b=new Button[a.length];
		public Core(String title)
		{
				setTitle(title);
				setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				add(p);
				setSize(500,60);
				for(int i=0;i<a.length;i++)
				{
						b|i|=new Button(a|i|);
						p.add(b|i|);
						b|i|.addActionListener(this);
				}
				setVisible(true);
		}
		public void actionPerformed(ActionEvent e)
		{
				for(int i=0;i<a.length;i++)
						if(e.getSource()==b|i|) System.out.println("You have clicked button "+a|i|);
		}
		public static void main(String args[])
		{
				Core c=new Core("My frame");
		}
}


Sở dĩ trong bài này ta dùng khởi tạo của Core là để sử dụng addActionListener(this);
<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#36
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 16 - MenuBar,Menu và MenuItem
* MenuBar và Menu

Để thấy được các Menu như File, Edit, Help như trên một cửa sổ Windows thông thường thì tất cả các đối tượng Menu ấy phải được add vào một MenuBar. Để Menubar có thể xúât hiện trong JFrame thì ta dùng phương thức setMenuBar(menuBar). Chương trình sau minh họa một ứng dụng như vậy

import javax.swing.JFrame;
import java.awt.*;
class Core
{
		public static void main(String args[])
		{
				JFrame f = new JFrame("My frame");
				f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				MenuBar menuBar=new MenuBar();
				f.setMenuBar(menuBar);
				Menu file=new Menu("File");
				menuBar.add(file);
				Menu edit=new Menu("Edit");
				menuBar.add(edit);
				Menu help=new Menu("Help");
				menuBar.setHelpMenu(help);
				//phan code duoi them vao day
				f.setSize(200,60);
				f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				f.setVisible(true);
		}
}

* Menu và MenuItem
Còn để New, Open, Save hiện ra trong menu File thì các MenuItem ấy phải được add vào menu File. Ta thêm vào như sau
MenuItem newItem=new MenuItem("New");
file.add(newItem);
MenuItem openItem=new MenuItem("Open");
file.add(openItem);
MenuItem saveItem=new MenuItem("Save");
file.add(saveItem);
saveItem.setEnable(false);
//phan code duoi them vao day
file.addSeparator(); //phuong thuc nay dua mot hang phan cach vao menu File
MenuItem exitItem=new MenuItem("Exit");
file.add(exitItem);
Để cho một MenuItem không thể chọn được, ta dùng phương thức setEnable(false) (mặc định là true) ví dụ như trên saveItem.setEnable(false); Điều này đặc biệt hữu ích với ứng dụng văn bản chưa có chữ nào thì không nên cho người dùng chọn MenuItem saveItem
* Menu và submenu
Để tạo một MenuItem chứa một Menu khác (submenu), ta chỉ việc tạo Menu đó rồi add vào menu item kia là xong. Ta thêm vào như sau
Menu print=new Menu("Setup Print");
file.add(print);
MenuItem previewItem=new MenuItem("Preview");
print.add(previewItem);
MenuItem printItem=new MenuItem("Print");
print.add(printItem);
//phan code duoi them vao day
* CheckboxMenuItem
Bạn cũng có thể tạo một mục chọn có khả năng đánh dấu bằng cách sử dụng lớp CheckboxMenuItem
CheckboxMenuItem autosave=new CheckboxMenuItem("Auto Save");
file.add(autosave);
Ngoài ra còn một phương thức khởi tạo khác là CheckboxMenuItem autosave=new CheckboxMenuItem("Auto Save",true); Mặc định là false (chưa chọn)
<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#37
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 17 - Khởi tạo và cài đặt phương thức hành động hàng loạt
Bạn hãy cứ tưởng tượng nếu bạn phải làm một ứng dụng giống như Microsoft Word (chỉ mới nói Word thôi chứ chưa dám đụng tới Photoshop, Corel gì cả) với một lô Menu và mỗi Menu có hơn chục cái MenuItem. Vậy thì bạn phải khởi tạo, phải add rất là mệt. Hãy để máy tự động làm cho bạn, chỉ với vài vòng lặp. Bạn cần dùng một bảng String để lưu những label của menu và một mảng Menu để lưu chính những menu.

import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
class Core
{
		public static void main(String args[])
		{
				JFrame f = new JFrame("My frame");
				f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				MenuBar menuBar=new MenuBar();
				f.setMenuBar(menuBar);
				final String[] menuLabel={"File","Edit","View","Insert","Format","Table","Windows","Help"};
				final Menu[] menu=new Menu[menuLabel.length];
				for(int i=0;i<menuLabel.length;i++)
				{
						menu|i|=new Menu(menuLabel|i|);
						menuBar.add(menu|i|);
				}
				final String[] fileMenuItemLabel={"New","Open","Save","Exit"};
				final MenuItem[] fileMenuItem=new MenuItem[fileMenuItemLabel.length];
				for(int i=0;i<fileMenuItemLabel.length;i++)
				{
						fileMenuItem|i|=new MenuItem(fileMenuItemLabel|i|);
						menu[0].add(fileMenuItem|i|);
						if(i==2) menu[0].addSeparator();
				}
				fileMenuItem[3].addActionListener(new ActionListener()
				{
						public void actionPerformed(ActionEvent e)
						{
								System.exit(0);
						}
				});
				f.setSize(400,60);
				f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				f.setVisible(true);
		}
}

<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#38
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 18 - ScrollPane

import javax.swing.JFrame;
import java.awt.*;
class Core
{
		public static void main(String args[])
		{
				JFrame f = new JFrame("My frame");
				f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				ScrollPane s=new ScrollPane();
				TextArea t=new TextArea();
				s.add(t);
				f.add(s);
				f.setSize(200,120);
				f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				f.setVisible(true);
		}
}

<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#39
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 19 - LookAndFeel (cảm quan giao diện)
LookAndFeel (viết tắt là LaF gọi là cảm quan giao diện cho ứng dụng. Sử dụng rất đơn giản
UIManager.setLookAndFeel(String className) với UIManager là một class còn className là tên class chứa cái LaF đó. Java hỗ trợ sẵn 3 cái là:
javax.swing.plaf.metal.MetalLookAndFeel (giao diện Java)
com.sun.java.swing.plaf.windows.WindowsLookAndFeel (giao diện Windows)
com.sun.java.swing.plaf.motif.MotifLookAndFeel (giao diện UNIX)
Sau khi set, để giao diện hiển thị trên JFrame nào, cần cập nhật trên JFrame đó bằng phương thức sau
SwingUtilities.updateComponentTreeUI(myFrame) (myFrame là tên JFrame cần cập nhật)
Ví dụ sau sẽ minh họa cách thay đổi LaF dựa vào CheckboxGroup. Cần nói thêm là phương thức UIManager.setLookAndFeel(String className) bắt buộc phải xử lí ngoại lệ

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Core
{
		public static void main(String args[])
		{
				final JFrame f = new JFrame("My JFrame");
				final String[] a={"Metal","Windows","Motif"};
				final Checkbox[] b=new Checkbox[a.length];
				final String[] c=new String[a.length];
				CheckboxGroup g=new CheckboxGroup();
				c[0]="javax.swing.plaf.metal.MetalLookAndFeel";
				c[1]="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
				c[2]="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
				Panel p=new Panel();
				f.add(p);
				for(int i=0;i<a.length;i++)
				{
						b[i]=new Checkbox(a[i],g,false);
						p.add(b[i]);
						b[i].addItemListener(new ItemListener()
						{
								public void itemStateChanged(ItemEvent e)
								{
										for(int j=0;j<a.length;j++)
										{
												if(e.getSource()==b[j])
												{
														try
														{
																UIManager.setLookAndFeel(c[j]);
														}
														catch(Exception exception)
														{
																System.out.println("LaF not found");
														}
														SwingUtilities.updateComponentTreeUI(f);
												}
										}
								}
						});
				}
				f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				f.setVisible(true);
		}
}

<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->

#40
PhươngĐiệp2410

PhươngĐiệp2410

    Thạc sĩ CSTH

  • VIP
  • PipPipPipPipPip
  • 1917 Bài Viết:
Bài 20 - Cách sử dụng LaF của hãng thứ 3:
Cách 1: coi nó như là 1 add-in plugin, tức là đưa cái file .jar chứa class mình cần vào thư mục jdk1.5.0\jre\lib\ext rồi cứ thế điều chỉnh className cho phù hợp
Cách 2: giải nén file .jar ra và tống thẳng nó vào gói jdk1.5.0\jre\lib\rt.jar
Ví dụ: bạn DOWN được gói xplookandfeel.jar và chép nó theo cách 1
Bạn hãy mở file readme của gói này ra và tìm thấy className của nó là "com.stefankrause.xplookandfeel.XPLookAndFeel" thì đưa thêm nó vào
* LaF có bản quyền (ở đây lấy ví dụ là Alloy-có cả mã)
Để sử dụng LaF có bản quyền bạn setProperty cho nó, ví dụ là dùng AlloyLaF (className là "com.incors.plaf.alloy.AlloyLookAndFeel")

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Core
{
		public static void main(String args[])
		{
				com.incors.plaf.alloy.AlloyLookAndFeel.setProperty("alloy.licenseCode","v#ej_technologies#uwbjzx#e6pck8");
				final JFrame f = new JFrame("My f");
				final String[] a={"Metal","Windows","Motif","XP","Alloy"};
				final Checkbox[] b=new Checkbox[a.length];
				final String[] c=new String[a.length];
				CheckboxGroup g=new CheckboxGroup();
				c[0]="javax.swing.plaf.metal.MetalLookAndFeel";
				c[1]="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
				c[2]="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
				c[3]="com.stefankrause.xplookandfeel.XPLookAndFeel";
				c[4]="com.incors.plaf.alloy.AlloyLookAndFeel";
				Panel p=new Panel();
				f.add(p);
				for(int i=0;i<a.length;i++)
				{
						b[i]=new Checkbox(a[i],g,false);
						p.add(b[i]);
						b[i].addItemListener(new ItemListener()
						{
								public void itemStateChanged(ItemEvent e)
								{
										for(int j=0;j<a.length;j++)
										{
												if(e.getSource()==b[j])
												{
														try
														{
																UIManager.setLookAndFeel(c[j]);
														}
														catch(Exception exception)
														{
																System.out.println("LaF not found");
														}
														SwingUtilities.updateComponentTreeUI(f);
												}
										}
								}
						});
				}
				f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				f.setVisible(true);
		}
}

<!--coloro:#008080--><!--/coloro--><!--sizeo:5--><!--/sizeo-->http://winsocks.net/

<!--sizec-->
<!--/sizec-->
<!--colorc-->
<!--/colorc--><!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.
<!--colorc-->
<!--/colorc--><!--sizec-->
<!--/sizec--> <!--sizeo:3--><!--/sizeo--><!--coloro:#0000ff--><!--/coloro-->More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5<!--colorc--><!--/colorc--><!--sizec--><!--/sizec-->






Calvin Music

Close [X]