Lessons XVII : JAVA for dummies – nhập môn JAVA (Phần 5)

JAVA for dummies – nhập môn JAVA (Phần 5)

Thứ ba, 19 Tháng 8 2008 05:15 vinajava Hướng dẫn lập trình Java
Email In

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);
 }
} 
Bài 21 – JCheckbox
* JCheckBox tương tự Checkbox

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Core
{
 public static void main(String args[])
 {
 JFrame frame = new JFrame("My frame");
 JCheckbox checkbox=new JCheckbox("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.setVisible(true);
 }
}

Bài 22 – JRadioButton và ButtonGroup
* JRadioButton và ButtonGroup tương tự Checkbox và CheckboxGroup

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 JRadioButton[] b=new JRadioButton[a.length];
 final String[] c=new String[a.length];
 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";
 ButtonGroup g=new ButtonGroup();
 JPanel p=new JPanel();
 f.add(p);
 for(int i=0;i<a.length;i++)
 {
 b|i|=new JRadioButton(a|i|);
 g.add(b|i|);
 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);
 }
}

Bài 23 – JComboBox và JList
* JComboBox tương tự như Choice

import javax.swing.*;
import java.awt.*;
class Core
{
 public static void main(String args[])
 {
 JFrame f = new JFrame("My frame");
 String[] label={"ASM","C\\C++","VB","Java"};
 JComboBox box=new JComboBox(label);
 f.add(box);
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 f.setSize(100,55);
 f.setVisible(true);
 }
}

* JList tương tự List nhưng nó lại không tự kéo thả được như List, cần có sự hỗ trợ của JScrollPane

import javax.swing.*;
import java.awt.*;
class Core
{
 public static void main(String args[])
 {
 JFrame f = new JFrame("My frame");
 String[] label={"ASM","Pascal","C\\C++","VB","Java"};
 JList l=new JList(label);
 ScrollPane s=new ScrollPane();
 s.add(l);
 f.add(s);
 f.setSize(100,100);
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 f.setVisible(true);
 }
}

* Còn lại thì JMenuBar,JMenu,JMenuItem tương tự MenuBar,Menu,MenuItem

Bài 24 – JTabbedPane
Đây gọi là đối tượng phân trang. Ví dụ dưới đây minh họa 1 trong các phương thức addTab là JTabbedPane.addTab(String title,Component component) Các component trong ví dụ đều là các JButton

import javax.swing.*;
import java.awt.*;
class Core
{
 public static void main(String args[])
 {
 JFrame f = new JFrame("My frame");
 String[] label={"ASM","Pascal","C\\C++","VB","Java"};
 JButton[] b=new JButton[label.length];
 JTabbedPane p=new JTabbedPane();
 for(int i=0;i<label.length;i++)
 {
 b|i|=new JButton(label|i|);
 p.addTab(label|i|,b|i|);
 }
 f.add(p);
 f.setSize(300,100);
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 f.setVisible(true);
 }
}

Thông thường thì các componenet đều là các khung chứa (ví dụ như JPanel) chứa nhiều đối tượng riêng biệt

Bài 25 – JToolBar
JToolBar (thanh công cụ) giống y như bạn thường thấy trong các ứng dụng Windows. Nó bao gồm nhiều JButton, mỗi JButton có một Icon riêng. Trước hết hãy chuẩn bị vài hình .gif 24×24 cho ví dụ này. Nếu không tìm thấy thì chép từ jdk1.5.0\demo\plugin\jfc\Stylepad\resources. Chép vào thư mục chứa mã nguồn

import javax.swing.*;
import java.awt.*;
class Core
{
 public static void main(String args[])
 {
 JFrame f = new JFrame("My frame");
 JToolBar t=new JToolBar();
 String[] label={"New","Open","Save","Cut","Copy","Paste","Bold","Italic","Underline","Left","Right","Center"};
 String[] file={"new.gif","open.gif","save.gif","cut.gif","copy.gif","paste.gif","bold.gif","italic.gif","underline.gif","left.gif","right.gif","center.gif"};
 ImageIcon[] icon=new ImageIcon[label.length];
 JButton[] b=new JButton[label.length];
 for(int i=0;i<label.length;i++)
 {
 icon|i|=new ImageIcon(file|i|);
 b|i|=new JButton(icon|i|);
 b|i|.setToolTipText(label|i|);
 t.add(b|i|);
 if((i==2)||(i==5)||(i==8)) t.addSeparator();
 }
 f.add(t);
 f.setSize(600,70);
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 f.setVisible(true);
 }
}

Bài 26 – JTable
* JTable hiển thị dữ liệu có sẵn

import javax.swing.*;
import java.awt.*;
class Core
{
 public static void main(String args[])
 {
 JFrame f = new JFrame("My frame");
 String[][] dat={{"1","JCreator","Xinox","Beginer"},
 {"2","jGRASP","Auburn","Medium"},
 {"3","NetBeans","Sun Microsystems","Expert"},
 {"4","Gel","GExperts","Beginer"},
 {"5","Eclipse","Eclipse","Expert"},
 {"6","JBuilder","Borland","Expert"}};
 String[] columnName={"ID","Name","Company","Rank"};
 JTable t=new JTable(dat,columnName);
 JScrollPane s=new JScrollPane(t);
 f.add(s);
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 f.setSize(400,100);
 f.setVisible(true);
 }
}

* Thao tác trực tiếp dữ liệu trong từng ô của bảng
Trong ví dụ dưới chúng ta sẽ thay đổi dữ liệu của cột “Rank” bằng một JComboBox, sử dụng class TableColumn

import javax.swing.*;
import java.awt.*;
import javax.swing.table.*;
class Core
{
 public static void main(String args[])
 {
 JFrame f = new JFrame("My frame");
 String[][] dat={{"1","JCreator","Xinox","Beginer"},
 {"2","jGRASP","Auburn","Medium"},
 {"3","NetBeans","Sun Microsystems","Expert"},
 {"4","Gel","GExperts","Beginer"},
 {"5","Eclipse","Eclipse","Expert"},
 {"6","JBuilder","Borland","Expert"}};
 String[] columnName={"ID","Name","Company","Rank"};
 JTable t=new JTable(dat,columnName);
 JScrollPane s=new JScrollPane(t);
 f.add(s);
 JComboBox c=new JComboBox(new String[]{"Low","High","Extremely"});
 TableColumn rankColumn=t.getColumn("Rank");
 rankColumn.setCellEditor(new DefaultCellEditor(c));
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 f.setSize(400,100);
 f.setVisible(true);
 }
} 
Bài 27 – JOptionPane cơ bản
Đây có thể nói là công cụ Dialog mạnh nhất
Trước tiên hãy xem qua ví dụ sau

import javax.swing.*;
class Core
{
 public static void main(String args[])
 {
 JFrame f = new JFrame("My frame");
 JOptionPane.showMessageDialog(f,"Hien thi cau thong bao","Hien thi tieu de",JOptionPane.ERROR_MESSAGE);
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 f.setVisible(true);
 }
}

JOptionPane bao gồm các thành phần chính sau đây: Title, Icon, Message, InputValue và OptionButtons. Không cần bao gồm đủ tất cả
* Khởi tạo của JOptionPane
JOptionPane(Object message, int messageType, int optionType, Icon icon, Object[] options)
Bạn có thể thíêu bất cứ thành phần nào thậm chí có thể thiếu hết
Object message: câu thông báo hiển thị trên JOptionpane
int messageType: bao gồm ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, và PLAIN_MESSAGE
int optionType: bao gồm DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION
Icon icon: hình icon của JOptionPane
Ví dụ:

import javax.swing.*;
class Core
{
 public static void main(String args[])
 {
 JFrame f = new JFrame("My frame");
 f.add(new JOptionPane("Hien thi cau thong bao", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_CANCEL_OPTION));
 f.setSize(250,150);
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 f.setVisible(true);
 }
}

* Các phương thức (hay sử dụng hơn)
void showMessageDialog(Component parentComponent, Object message, String title, int messageType)
String showInputDialog(Component parentComponent, Object message, String title, int messageType)
int showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType) Yes trả về 0 và No trả về 1

Nguồn: JavaVietnam.org

  1. Leave a comment

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: