Lap trinh giao dien nguoi dung voi Java

  • 1,514 views
Uploaded on

 

More in: Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,514
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
110
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ANHMATTROI – TIN5A JAVA GUI 1. Cửa sổ - Tạo cửa sổ windows: khai báo một lớp kế thừa từ lớp JFrame hoặc không + Khai báo thư viện: import javax.swing.JFrame; + Khai báo biến: <tên lớp kế thừa từ lớp JFrame> <tên biến>; Để sử dụng được biến ta cần khởi tạo cho biến bằng toán tử new: <tên biến> = new <tên lớp kế thừa từ lớp JFrame>; + Các hàm: truy cập hàm <tên biến>.<tên hàm>(…); add(<thêm đối tượng vào cửa sổ>); setLayout(new <kiểu bố trí>); Kiểu bố trí gồm có: FlowLayout(), GridLayout(), GridBagLayout(),… setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(int x,int y); setVisible(boolean); setTitle("Tiêu đề"); setLacation(x,y); setCursor(Cursor.<kiểu chuột>); setAlwaysOnTop(boolean); có luôn hiện trên desktop không setResizable(boolean); validate(); hiển thị ngay các đối tượng khi khởi động + Ví dụ: package javagui_vd; import java.awt.Color; import java.awt.Cursor; import javax.swing.JFrame; public class JavaGui_VD extends JFrame { public static void main(String[] args) { JavaGui_VD gui = new JavaGui_VD(); gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); gui.setSize(650,400); gui.setVisible(true); gui.setTitle(“Windows”); gui.setAlwaysOnTop(false); gui.setBackground(Color.black); gui.setCursor(Cursor.HAND_CURSOR); 1
  • 2. ANHMATTROI – TIN5A } } 2. Các bộ chứa - Panel + Thư viện: import javax.swing.JPanel; + Khai báo biến: <thuộc tính của lớp> JPanel <tên biến>; <tên biến> = new JPanel(); + Các hàm: add(<đối tượng>); setBackground(Color.<tên màu>); setForeground(Color.<tên màu>); + Ví dụ: package vd; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Color; import java.awt.Cursor; import java.awt.GridLayout; class VD { private JPanel a,b,c; public VD(JFrame g) { g.setLayout(new GridLayout(1,3)); a = new JPanel(); a.setBackground(Color.BLUE); a.setCursor(new Cursor(Cursor.HAND_CURSOR)); g.add(a); b = new JPanel(); b.setBackground(Color.GREEN); b.setCursor(new Cursor(Cursor.TEXT_CURSOR)); g.add(b); c = new JPanel(); c.setBackground(Color.RED); c.setCursor(new Cursor(Cursor.MOVE_CURSOR)); 2
  • 3. ANHMATTROI – TIN5A g.add(c); } public static void main(String args[]) { JFrame g = new JFrame(); g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g.setVisible(true); g.setSize(500,300); g.setLocation(400,200); g.setTitle("Panel"); VD m = new VD(g); } } - ScrollPanel + Thư viện: import javax.swing.JscrollPanel; + Khai báo biến: <thuộc tính của lớp> <tên biến> = new JscrollPanel(); + Các hàm: setViewportView(<đối tượng điều khiển>); setBounds(x1,y1,x2,y2); đường biên + Ví dụ: package vd; import javax.swing.ImageIcon; import javax.swing.JFrame; 3
  • 4. ANHMATTROI – TIN5A import javax.swing.JLabel; import javax.swing.JScrollPane; class VD extends javax.swing.JFrame { private JScrollPane scrollpanel; private ImageIcon imageicon; private JLabel label; public VD() { imageicon = new ImageIcon("C:UsersANHMATTROIDesktopAMT.jpg"); imageicon.setDescription("Hoa Bo Cong Anh"); label = new JLabel(imageicon); scrollpanel = new JScrollPane(); scrollpanel.setViewportView(label); scrollpanel.setBounds(10,10,275,290); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(null); setSize(300, 350); setTitle("ScrollPanel"); add(scrollpanel); validate(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new VD().setVisible(true); } }); } } 4
  • 5. ANHMATTROI – TIN5A 3. Các đối tượng điều khiển - Label: nhãn hiển thị + Khai báo thư viện: import javax.swing.JLabel; + Khai báo biến: <thuộc tính của lớp> JLabel <tên biến>; <tên biến> = new JLabel(“hiện cái gì ở nhãn này”); + Thêm label vào khung cửa sổ windows: add(<tên biến>); trước khi thêm label vào khung cửa sổ phải thành lập các đặc tính của label trước khi thêm thì mới có hiệu lực + Các hàm: truy cập hàm <tên biến>.<tên hàm>(…); setText(“hiện chữ gì ở label”); getText(); setFont(<tên biến của lớp Font>); Font f = new Font(“tên font”,<kiểu font>,<kích thước>) Khai báo thư viện: import java.awt.Font; Kiểu font: 0: chữ bình thường 1: chữ đậm 2: chữ nghiêng setForeground(Color.<tên màu>); màu chữ Thư viện: import java.awt.Color; 5
  • 6. ANHMATTROI – TIN5A + Ví dụ: package vd; import javax.swing.JFrame; import javax.swing.JLabel; import java.awt.Color; import java.awt.Font; import java.awt.FlowLayout; class VD { private JLabel nhan1,nhan2,nhan3; public VD(JFrame g) { g.setLayout(new FlowLayout(FlowLayout.CENTER)); Font f = new Font("Tahoma",1,12); nhan1 = new JLabel("Label 1"); nhan1.setFont(f); nhan1.setForeground(Color.red); g.add(nhan1); nhan2 = new JLabel("Label 2"); nhan2.setFont(f); nhan2.setForeground(Color.GREEN); g.add(nhan2); 6
  • 7. ANHMATTROI – TIN5A nhan3 = new JLabel("Label 3"); nhan3.setFont(f); nhan3.setForeground(Color.BLUE); g.add(nhan3); g.validate(); } public static void main(String args[]) { JFrame g = new JFrame(); g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g.setVisible(true); g.setSize(500,200); g.setTitle("Label"); g.setLocation(300,200); VD v = new VD(g); } } 7
  • 8. ANHMATTROI – TIN5A - Button: nút ấn để chạy chương trình + Khai báo thư viện: import javax.swing.JButton; + Khai báo biến: <thuộc tính của lớp> JButton <tên biến>; <tên biến> = new JButton(“hiện chữ gì trên nút này”); + Thêm button vào khung cửa sổ: add(<tên biến>); + Các hàm: getActionCommand(); trả lại tên nút đã click setFont(f); setForeground(Color.<tên màu>); setBackground(Color.<tên màu>); màu nền setEnabled(boolean); có ngắt click button không setCursor(new Cursor(Cursor.<loại chuột>)); thư viện java.awt.Cursor setIcon(icon); Toolkit.getDefaultToolkit.beep(); có tiếng beep khi click button Thư viện: import java.awt.Toolkit; + Bắt click chuột: khai báo thư viện import java.awt.event.ActionListener; và import java.awt.event.ActionEvent; khai báo thêm một lớp là thành phần public của lớp chẳng hạn như: Event e = new Event(); <tên biến button>.addActionListener(e); xong định nghĩa lớp Event như một hàm của lớp có thuộc tính public public class Event implements ActionListener { public void actionPerformed(ActionEvent e) 8
  • 9. ANHMATTROI – TIN5A { String op = e.getActionCommand(); //op lưu tên nút đã click chuột //thực hiện những công việc gì khi nút được click } } + Ví dụ: package vd; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JButton; import java.awt.Color; import java.awt.Font; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; class VD { private JLabel nhan; private JButton trai,phai; public VD(JFrame g) { g.setLayout(new FlowLayout(FlowLayout.CENTER)); Font f = new Font("Tahoma",0,12); 9
  • 10. ANHMATTROI – TIN5A trai = new JButton("Trái"); trai.setFont(f); trai.setForeground(Color.red); g.add(trai); nhan = new JLabel("Trái - Phải"); nhan.setFont(f); nhan.setForeground(Color.black); g.add(nhan); phai = new JButton("Phải"); phai.setFont(f); phai.setForeground(Color.blue); g.add(phai); g.validate(); //bắt click chuột AnNut e = new AnNut(); trai.addActionListener(e); phai.addActionListener(e); } public class AnNut implements ActionListener { public void actionPerformed(ActionEvent e) { String a = e.getActionCommand(); 10
  • 11. ANHMATTROI – TIN5A if(a.equals(trai.getText())) nhan.setText(trai.getText()); else if(a.equals(phai.getText())) nhan.setText(phai.getText()); } } public static void main(String args[]) { JFrame g = new JFrame(); g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g.setVisible(true); g.setSize(500,200); g.setTitle("Button"); g.setLocation(300,200); VD v = new VD(g); } } - TextField: dòng nhập các kí tự từ bàn phím + Khai báo thư viện: import javax.swing.JTextField; + Khai báo biến: 11
  • 12. ANHMATTROI – TIN5A <thuộc tính của lớp> JTextField <tên biến>; <tên biến> = new JTextField(“hiện chữ gì đó ở textfield”); + Thêm textfield vào khung cửa sổ: add(<tên biến>); + Các hàm: setEditable(boolean); setSelectedTextColor(Color.<tên màu>); setSize(x,y); setFont(f); setForeground(Color.<tên màu>); setSelectionColor(Color.<tên màu>); setVisible(boolean); getText(); + Ví dụ: - CheckBox: lựa chọn có hay không + Thư viện: import javax.swing.JcheckBox; + Khai báo: <thuộc tính của lớp> JCheckBox <tên biến>; + Thêm checkbox vào khung cửa sổ: add(<tên biến>); + Các hàm: isSelected(); setSelected(true/false); isEnabled(); setFont(f); setForeground(Color.<tên màu>); + Thêm checkbox vào khung cửa sổ: add(<tên biến); + Bắt sự kiện chọn checkbox: khai báo biến của một lớp nào đó <lớp bắt sự kiện> <tên biến x> = new <tên lớp bắt sự kiện>; <tên biến checkbox>.addItemListener(<tên biến x>); sau đó định nghĩa lớp bắt sự kiện chọn checkbox + Ví dụ: import java.awt.FlowLayout; import java.awt.Font; import java.awt.Color; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JFrame; import javax.swing.JCheckBox; import javax.swing.JLabel; 12
  • 13. ANHMATTROI – TIN5A public class VD { private JCheckBox checkboxD, checkboxS; private JLabel label; public VD(JFrame g) { //bố trí các đối tượng trong khung cửa sổ g.setLayout(new FlowLayout(FlowLayout.LEFT)); //chọn font Font f = new Font("Tahoma",0,12); // label chọn đúng hay sai label = new JLabel("Chọn đúng hoặc sai"); label.setFont(f); label.setForeground(Color.black); g.add(label); //checkbox chọn đúng checkboxD = new JCheckBox("Đúng"); checkboxD.setFont(f); checkboxD.setForeground(Color.red); g.add(checkboxD); //checkbox chọn sai checkboxS = new JCheckBox("Sai"); checkboxS.setFont(f); checkboxS.setForeground(Color.red); g.add(checkboxS); //bắt sự kiện chọn checkbox { Event e = new Event(); checkboxD.addItemListener(e); checkboxS.addItemListener(e);// } } public class Event implements ItemListener { public void itemStateChanged(ItemEvent e) { if(checkboxD.isSelected()) { if(checkboxS.isEnabled()) checkboxS.setSelected(false); 13
  • 14. ANHMATTROI – TIN5A label.setText("Đúng"); } else { if(checkboxS.isSelected()) { if(checkboxD.isEnabled()) checkboxD.setSelected(false); label.setText("Sai"); } else { label.setText("Chọn đúng hay sai"); } } //checkboxD.setSelected(false); } } public static void main(String args[]) { //tạo khung cửa sổ JFrame g = new JFrame(); g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g.setLocation(500,200); g.setSize(320,180); g.setVisible(true); g.setTitle("CheckBox"); VD v = new VD(g); } } 14
  • 15. ANHMATTROI – TIN5A - RadioButton: + Thư viện: import javax.swing.JradioButton; + Khai báo biến: <thuộc tính của lớp> JRadioButton <tên biên>; <tên biến> = new JRadioButton(“…..”); + Các hàm: setFont(f); setCursor(new Cursor(Cursor.<loại chuột>)); setMnemonic(KeyEvent.<loại dấu gạch chân ở dưới chữ>); setActionCommand(“…”); setSelected(boolean); + Khi có nhiều radiobutton bạn muốn mỗi lần click chuột chỉ chọn được một radiobutton, nút radiobutton được chọn ở lần click chuột trước tự động không được chọn nữa khi click vào radiobutton khác: ta chỉ cần cho những radiobutton này vào một nhóm ButtonGroup Thư viện: import javax.swing.ButtonGroup; Khia báo: ButtonGroup <tên biến> = new ButtonGroup(); <tên biến>.add(<tên biến của radiobutton>); ……………………………………………………………… + Bắt sự kiện click chuột vào radiobutton: giống button + Ví dụ: package vd; import javax.swing.JFrame; import javax.swing.JLabel; import java.awt.Color; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import javax.swing.ButtonGroup; import javax.swing.JRadioButton; import javax.swing.JPanel; class VD { private JLabel l1,l2,l3; private JPanel panel; private JRadioButton rb1,rb2,rb3; 15
  • 16. ANHMATTROI – TIN5A public VD(JFrame g) { l1 = l2 = l3 = null; rb1 = rb2 = rb3 = null; panel = null; CuaSo(g); } public final void CuaSo(JFrame g) { g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g.setSize(300,100); g.setVisible(true); g.setAlwaysOnTop(true); g.setTitle("RadioButton"); g.setResizable(false); g.setLocation(350,200); panel = new JPanel(); panel.setBackground(Color.white); panel.setLayout(new GridLayout(2,3)); Font f = new Font("Tahoma",0,12); l1 = new JLabel("Giới tính"); l1.setFont(f); l1.setForeground(Color.black); l1.setPreferredSize(new Dimension(15,5)); l1.setMaximumSize(new Dimension(15,5)); panel.add(l1); l2 = new JLabel("Giới tính"); l2.setFont(f); l2.setForeground(Color.black); l2.setPreferredSize(new Dimension(15,5)); l2.setMaximumSize(new Dimension(15,5)); panel.add(l2); l3 = new JLabel("Giới tính"); l3.setFont(f); l3.setForeground(Color.black); l3.setPreferredSize(new Dimension(15,5)); l3.setMaximumSize(new Dimension(15,5)); 16
  • 17. ANHMATTROI – TIN5A panel.add(l3); rb1 = new JRadioButton("Đỗ Bình"); rb1.setMnemonic(KeyEvent.VK_N); rb1.setActionCommand("Đỗ Bình"); rb1.setFont(f); rb1.setCursor(new Cursor(Cursor.HAND_CURSOR)); rb1.setSelected(false); panel.add(rb1); rb2 = new JRadioButton("Đức"); rb2.setMnemonic(KeyEvent.VK_N); rb2.setActionCommand("Đức"); rb2.setFont(f); rb2.setCursor(new Cursor(Cursor.HAND_CURSOR)); rb2.setSelected(false); panel.add(rb2); rb3 = new JRadioButton("Đoàn Dũng"); rb3.setMnemonic(KeyEvent.VK_N); rb3.setActionCommand("Đoàn Dũng"); rb3.setFont(f); rb3.setCursor(new Cursor(Cursor.HAND_CURSOR)); rb3.setSelected(false); panel.add(rb3); //gom các radiobutton vào nhóm ButtonGroup nhom = new ButtonGroup(); nhom.add(rb1); nhom.add(rb2); nhom.add(rb3); g.add(panel); g.validate(); //bắt sự kiện các radiobutton ClickRadioButton e = new ClickRadioButton(); rb1.addActionListener(e); rb2.addActionListener(e); rb3.addActionListener(e); } public class ClickRadioButton implements ActionListener 17
  • 18. ANHMATTROI – TIN5A { public void actionPerformed(ActionEvent e) { String op = e.getActionCommand(); if(op.equals(rb1.getText())) { l1.setText("Nữ"); l2.setText("Giới tính"); l3.setText("Giới tính"); } else { if(op.equals(rb2.getText())) { l2.setText("Không xác định"); l1.setText("Giới tính"); l3.setText("Giới tính"); } else { l3.setText("Nam"); l1.setText("Giới tính"); l2.setText("Giới tính"); } } } } public static void main(String args[]) { JFrame g = new JFrame(); VD v = new VD(g); } } 18
  • 19. ANHMATTROI – TIN5A - ComboBox: mở danh sách để chọn một đối tượng + Thư viện: import javax.swing.JComboBox; + Khai báo biến: <thuộc tính của lớp> JComboBox <tên biến>; <tên biến> = new JComboBox(<danh sách các đối tượng>); + Các hàm: setSelectedIndex(<vị trí bắt đầu>); setPreferredSize(new Dimension(<độ rông>,<độ cao>)); setMaximumSize(new Dimension(<độ rông>,<độ cao>)); Thư viện: import java.awt.Dimension; setFont(f); setForeground(Color.<tên màu>); setCursor(new Cursor(Cursor.<kiểu chuột>)); + Thêm vào bộ chứa: add(<tên biến>); + Bắt sự kiện: khai báo thư viện import java.awt.event.ItemListener; public class ClickComboBox implements ItemListener { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { int i = <tên biến>.getSelectedIndex(); //trả về chỉ số của đối tượng truyền vào //các lệnh } } } + Ví dụ: package vd; import javax.swing.JFrame; import javax.swing.JLabel; import java.awt.Color; import java.awt.Cursor; 19
  • 20. ANHMATTROI – TIN5A import java.awt.Dimension; import java.awt.Font; import java.awt.FlowLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JComboBox; import javax.swing.JPanel; class VD { private JLabel nhan; private JPanel panel; private JComboBox combobox; private final String[] ten = { "Đỗ Thị Bình", "Nguyễn Thị Đức", "Đoàn Thị Dũng", "Nguyễn Xuân Dũng", "Lê Thanh Tuấn", "Trịnh Xuân Hoàn", "Hoa Hồng", "Hoa Cúc", "Hoa Tuylip", "Hoa Bồ Công Anh", "Hoa Quỳnh", "Phong Lan", "Hoa Đào", 20
  • 21. ANHMATTROI – TIN5A "Hoa Mai" }; public VD(JFrame g) { nhan = null; combobox = null; panel = null; CuaSo(g); } public final void CuaSo(JFrame g) { g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g.setVisible(true); g.setSize(500,200); g.setTitle("ComboBox"); g.setLocation(300,200); panel = new JPanel(); panel.setBackground(Color.white); panel.setLayout(new FlowLayout(FlowLayout.CENTER)); Font f = new Font("Tahoma",0,12); nhan = new JLabel("Chọn tên một sinh viên"); nhan.setFont(f); nhan.setForeground(Color.BLACK); panel.add(nhan); 21
  • 22. ANHMATTROI – TIN5A combobox = new JComboBox(ten); combobox.setSelectedIndex(-1); combobox.setPreferredSize(new Dimension(200, 25)); combobox.setMaximumSize(new Dimension(210, 25)); combobox.setFont(f); combobox.setCursor(new Cursor(Cursor.HAND_CURSOR)); combobox.setForeground(Color.red); panel.add(combobox); g.add(panel); ClickComboBox e = new ClickComboBox(); combobox.addItemListener(e); g.validate(); } //định nghĩa lớp bắt sự kiện click combobox public class ClickComboBox implements ItemListener { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { //JComboBox combo = (JComboBox) e.getSource(); int i = combobox.getSelectedIndex(); nhan.setText(ten[i]); } } } 22
  • 23. ANHMATTROI – TIN5A public static void main(String args[]) { JFrame g = new JFrame(); VD v = new VD(g); } } - ProgressBar + Thư viện: import javax.swing.JProgressBar; + Khai báo biến: <thuộc tính của lớp> <JProgressBar <tên biến>; <tên biến> = new JProgressBar(<tải từ giá trị>,<đến giá trị>); + Các hàm: setStringPainted(boolean); có hiện thị giá trị đã tải được hay không setForeground(<Color.<tên màu>); setBackground(Color.<tên màu>); getValue(); setValue(); + Thêm vào khung cửa sổ: add(<tên biến>); + Ví dụ: import java.awt.Color; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JProgressBar; 23
  • 24. ANHMATTROI – TIN5A import javax.swing.Timer; class Main { private JProgressBar progressbar; private JButton button; private Timer timer; boolean click = false; public Main(JFrame g) { g.setLayout(new FlowLayout(FlowLayout.LEFT)); button = new JButton("Start"); g.add(button); Event e = new Event(); button.addActionListener(e); progressbar = new JProgressBar(0,100); progressbar.setStringPainted(true); progressbar.setForeground(Color.blue); progressbar.setBackground(Color.white); g.add(progressbar); g.validate(); } public class Event implements ActionListener { public void actionPerformed(ActionEvent e) { TimerClass t = new TimerClass(100); timer = new Timer(10,t); timer.start(); button.setEnabled(false); } } public class TimerClass implements ActionListener { private int dem; public TimerClass(int a) 24
  • 25. ANHMATTROI – TIN5A { dem = a; } public void actionPerformed(ActionEvent e) { if(dem>0) { progressbar.setValue(progressbar.getValue() + 1); dem--; } else { button.setText("Finish"); button.setEnabled(true); timer.stop(); } } } public static void main(String args[]) { JFrame g = new JFrame(); g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g.setVisible(true); g.setSize( 500,300); g.setTitle("ProgressBar"); g.setLocation(300,150); Main m = new Main(g); } } 25
  • 26. ANHMATTROI – TIN5A - PasswordField + Thư viện: import javax.swing.JPasswordField; + Khai báo biến: <thuộc tính của lớp> JPasswordField <tên biến>; <tên biến> = new JPasswordField(); + Các hàm: getPassword(); hàm trả lại một chuỗi kí tự + Thêm vào khung cửa số: add(<tên biến>); + Ví dụ: package vd; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFrame; import javax.swing.JPasswordField; import javax.swing.JButton; import javax.swing.JLabel; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.FlowLayout; import java.util.Arrays; class VD { private JLabel label; private JButton button; private JPasswordField passwordfield; public VD(JFrame g) { g.setLayout(new FlowLayout(FlowLayout.LEFT)); Font f = new Font("Tahoma",0,12); button = new JButton("Đăng nhập"); 26
  • 27. ANHMATTROI – TIN5A button.setFont(f); g.add(button); passwordfield = new JPasswordField(15); passwordfield.setFont(f); passwordfield.setEchoChar('*'); g.add(passwordfield); label = new JLabel("Điền mật khẩu để đăng nhập"); label.setFont(f); g.add(label); g.validate(); Event e = new Event(); button.addActionListener(e); } public class Event implements ActionListener { private char a[] = new char[15]; public boolean DungMK() { char b[] = {'A','N','H','M','A','T','T','R','O','I'}; if(a.length!=b.length) return false; else return (Arrays.equals(a,b)); } public void actionPerformed(ActionEvent e) { a = passwordfield.getPassword(); if(a.length==0) label.setText("Hãy nhập mật khẩu"); else { if(this.DungMK()) { label.setText("Đăng nhập thành công"); passwordfield.selectAll(); } else { label.setText("Mật khẩu không đúng"); } 27
  • 28. ANHMATTROI – TIN5A } } } public static void main(String args[]) { JFrame g = new JFrame(); g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g.setVisible(true); g.setSize(300,200); g.setTitle("PasswordField"); g.setLocation(300,200); VD v = new VD(g); } } - Table + Thư viện: import javax.swing.JTable + Khai báo biến: <thuộc tính của lớp> JTable <tên biến>; + Tạo bảng:  Tạo 1 biến chứa tên các cột - a  Tạo 1 biến dữ liệu cho các cột đã khai báo - b  Tạo bảng: <tên biến> = new JTable(<b>,<a>);  JSrollPane scrollpane = new JscrollPane(<tên biến bảng>); // khai báo thư viện import javax.swing.JScrollPane; + Thêm bảng vào khung cửa sổ: add(scrollpane); + Các hàm: 28
  • 29. ANHMATTROI – TIN5A setPreferredScrollableViewportSize(new Dimension(width,height)); // khai báo thư viện: import java.awt.Dimension; setFillsViewportHeight(boolean); + Ví dụ: import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; class Table { private JTable table; public Table(JFrame g) { String TenCot[] = {"Mã","Tên","Ngày sinh"}; String DuLieu[][] = { {"1000","Đoàn Thị Dũng","1993"}, {"1001","Nguyễn Thị Đức","1992"}, {"1002","Đỗ Thị Bình","1993"} }; table = new JTable(DuLieu,TenCot); table.setPreferredScrollableViewportSize(new Dimension(500,50)); table.setFillsViewportHeight(true); JScrollPane scrollpane = new JScrollPane(table); g.add(scrollpane); } 29
  • 30. ANHMATTROI – TIN5A public static void main(String args[]) { //tạo khung cửa sổ JFrame g = new JFrame(); g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g.setSize(500,300); g.setVisible(true); g.setAlwaysOnTop(false); g.setLocation(300,200); g.setTitle("Table"); Table t = new Table(g); } } - Slider: thanh trượt + Khai báo thư viện: import javax.swing.JSlider; + Khai báo biến: <thuộc tính của lớp> JSlider <tên biến>; <tên biến> = new JSlider(JSlider.HORIZONTAL/VERTICAL,x,y,z); x: là giá trị mốc y: là giá trị lớn nhất z: bắt đầu ở giá trị nào + Thêm vào khng cửa sổ: add(<tên biến>); + Các hàm: getValues(); lấy giá trị hiện tại setMajorTickSpacing(x); chia mỗi đoạn có giá trị là x setPaintTicks(boolean); có hiện mốc mỗi đoan không + Bắt sự kiện: khai báo các thư viện import javax.swing.event.ChangeEvent; và import javax.swing.event.ChangeListener; sau đó tạo Event e = new Event(); <tên biến slider>.addChangeListener(e); ở hàm định nghĩa đối tượng Slider public class Event implements ChangeListener { public void stateChanged(ChangeEvent e) 30
  • 31. ANHMATTROI – TIN5A { int giatri = slider.getValue(); label.setText("Giá trị hiện tại là " + giatri); } } + Ví dụ: package slider; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JSlider; import javax.swing.JLabel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class Slider { private JSlider slider; private JLabel label; public Slider(JFrame g) { g.setLayout(new FlowLayout(FlowLayout.LEFT)); //font Font f = new Font("Tahoma",0,12); 31
  • 32. ANHMATTROI – TIN5A //label label = new JLabel("Giá trị hiện tại là 0"); label.setFont(f); label.setForeground(Color.red); g.add(label); //slider slider = new JSlider(JSlider.HORIZONTAL,0,20,0); slider.setMajorTickSpacing(4); slider.setPaintTicks(true); g.add(slider); g.validate(); //bắt sự kiện trên slider Event e = new Event(); slider.addChangeListener(e); } public class Event implements ChangeListener { public void stateChanged(ChangeEvent e) { int giatri = slider.getValue(); label.setText("Giá trị hiện tại là " + giatri); } } public static void main(String args[]) { JFrame g = new JFrame(); 32
  • 33. ANHMATTROI – TIN5A g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g.setSize(500,300); g.setVisible(true); g.setTitle("Slider"); g.setLocation(500,200); g.setAlwaysOnTop(true); Slider slider = new Slider(g); } } - MenuBar – Menu – MenuItem + Khai báo thư viện: import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; + Khai báo biến: <thuộc tính của lớp> JMenuBar <tên biến> = new JMenuBar(); <thuộc tính của lớp> JMenu <tên biến> = new Menu(“…”); <thuộc tính của lớp> JMenuItem <tên biến> = new JMenuItem(“…”); + Thêm menubar vào khung cửa sổ: đầu tiên setJMenuBar(<tên biến của lớp menubar>), xong add(<tên biến>); + Bắt sự kiện click menuitem: khai báo Event e = new Event(); trong hàm định nghĩa menuitem và chọn <tên biến của menuitem>.addActionListener(e); public class Event implements ActionListener { public void actionPerformed(ActionEvent e) { //thực hiện lệnh } 33
  • 34. ANHMATTROI – TIN5A } + Các hàm: setFont(f); setForeground(Color.<tên màu>); + Thêm menubar vào khung cửa sổ: add(<tên biến>) + Thêm danh mục menu vào menubar: <biến của lớp menubar>.add(<tên bieenw của lớp menu>) + Thêm danh mục menuitem vào menu: <tên biến của lớp menu>.add(<tên biến của lớp menuitem>) + Ví dụ: package menu; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JFrame; public class Menu { private JMenuBar menubar; private JMenu menu; private JMenuItem menuitem; public Menu(JFrame g) { g.setLayout(new FlowLayout(FlowLayout.LEFT)); 34
  • 35. ANHMATTROI – TIN5A Font f = new Font("Tahoma",0,13); menubar = new JMenuBar(); menubar.setFont(f); menubar.setForeground(Color.blue); g.add(menubar); menu = new JMenu("File"); menu.setFont(f); menubar.add(menu); menuitem = new JMenuItem("Exit"); menuitem.setFont(f); menu.add(menuitem); g.setJMenuBar(menubar); g.validate(); Event e = new Event(); menuitem.addActionListener(e); } public class Event implements ActionListener { public void actionPerformed(ActionEvent e) { System.exit(1); } } public static void main(String args[]) 35
  • 36. ANHMATTROI – TIN5A { JFrame g = new JFrame(); g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g.setSize(500,200); g.setVisible(true); g.setLocation(300,200); g.setTitle("MenuBar - Menu - MenuItem"); Menu m = new Menu(g); } } - ImageIcon + Khia báo thư viện: import javax.swing.ImageIcon; + Khai báo biến: <thuộc tính của lớp> ImageIcon <tên biến>; <tên biến> = new ImageIcon(“đường dẫn tới file ảnh”); trong đường dẫn có hai dấu gạch chéo + Được dùng cho những đối tượng có hàm tạo tham số truyền vào là một imageicon hoặc đối tượng muốn setIcon(<tên biến của lớp ImageIcon>); như: label, button, … + Các hàm: setDescription(String); + Ví dụ: package imageicon; 36
  • 37. ANHMATTROI – TIN5A import java.awt.FlowLayout; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; public class icon { private ImageIcon imageicon; private JLabel label; public icon(JFrame g) { g.setLayout(new FlowLayout(FlowLayout.LEFT)); imageicon = ImageIcon("C:UsersANHMATTROIDesktopAMT.jpg"); imageicon.setDescription("Hoa Bo COng Anh"); new label = new JLabel(imageicon); label.setIcon(imageicon); g.add(label); g.validate(); } public static void main(String args[]) { JFrame g = new JFrame(); g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g.setSize(550,450); g.setLocation(300,200); g.setAlwaysOnTop(true); //g.setOpacity(0.2f); g.setTitle("ImageIcon"); g.setVisible(true); icon a = new icon(g); } } 37
  • 38. ANHMATTROI – TIN5A - TextArea: nhiều dòng nhập kí tự + Thư viện: import javax.swing.JTextArea; + Khai báo biến: <thuộc tính của lớp> JTextArea <tên biến> = new JTextArea(h,w); + Các hàm: setText(String); setColumns(x); setRows(y); getText(); setEditable(boolean); có ngắt không cho sửa các kí tự trong textarea không + Thêm vào khung cửa sổ: add(<tên biến của lớp JTextArea>); + Ví dụ: package vd; import java.awt.FlowLayout; import java.awt.event.ActionEvent; 38
  • 39. ANHMATTROI – TIN5A import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextArea; class VD { private JTextArea textarea; private JLabel lb; private JButton b; public VD(JFrame g) { g.setLayout(new FlowLayout(FlowLayout.LEFT)); lb = new JLabel(); lb.setText("Nhập chuỗi kí tự trong textarea"); g.add(lb); textarea = new JTextArea(6,18); textarea.setText("hoa bo cong anh"); textarea.setEditable(true); textarea.getText(); g.add(textarea); b = new JButton(); b.setText("Nhập"); g.add(b); ClickButton click = new ClickButton(); b.addActionListener(click); g.validate(); } public class ClickButton implements ActionListener { public void actionPerformed(ActionEvent click) { lb.setText(textarea.getText()); } } 39
  • 40. ANHMATTROI – TIN5A public static void main(String args[]) { JFrame g = new JFrame(); g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g.setSize(300,200); g.setAlwaysOnTop(true); g.setVisible(true); g.setLocation(300,200); VD v = new VD(g); } } - Timer + Thư viện: import javax.swing.Timer; + Khai báo biến: <thuộc tính của lớp> Timer <tên biến>; <tên biến> = new Timer(<trì hoãn bao nhiêu giây>,<một biến của lớp A>); Lớp A có hàm khởi tạo nhận tham số truyền vào là giá trị bắt đầu cho timer + Các hàm: start(); stop(); + Bắt sự kiện: định nghĩa lớp A có một biến lưu giá trị của timer tại từng thời điểm, hàm tạo nhận tham số truyền vào và hàm public void actionPerformed(ActionEvent e){ …} + Ví dụ: package vd; import javax.swing.JButton; import javax.swing.JFrame; 40
  • 41. ANHMATTROI – TIN5A import javax.swing.JTextField; import javax.swing.JLabel; import javax.swing.Timer; import java.awt.Font; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; class VD { private JLabel labelNhap, labelHienThi; private JTextField textfieldNhap; private JButton buttonChay; private Timer timer; public VD(JFrame g) { g.setLayout(new GridLayout(2,2)); Font f = new Font("Tahoma",0,12); labelNhap = new JLabel("Nhập thời gian"); labelNhap.setFont(f); g.add(labelNhap); textfieldNhap = new JTextField(); textfieldNhap.setFont(f); g.add(textfieldNhap); buttonChay = new JButton("Chạy"); buttonChay.setFont(f); g.add(buttonChay); labelHienThi = new JLabel("Nhấn nút chạy để bắt đầu"); labelHienThi.setFont(f); g.add(labelHienThi); Event e = new Event(); buttonChay.addActionListener(e); } public class Event implements ActionListener 41
  • 42. ANHMATTROI – TIN5A { public void actionPerformed(ActionEvent e) { int a = 0; try { a = Integer.parseInt(textfieldNhap.getText()); } catch(Exception loi) { labelHienThi.setText(loi.toString()); } TimeClass t = new TimeClass(a); timer = new Timer(1000,t); timer.start(); } } public class TimeClass implements ActionListener { private int dem; public TimeClass(int a) { dem = a; } public void actionPerformed(ActionEvent e) { dem--; if(dem>0) { labelHienThi.setText("Thời gian còn lại là: " + dem + "ms"); buttonChay.setEnabled(false); } else { labelHienThi.setText("Đã xong"); timer.stop(); Toolkit.getDefaultToolkit().beep(); buttonChay.setEnabled(true); } } 42
  • 43. ANHMATTROI – TIN5A } public static void main(String args[]) { JFrame g = new JFrame(); g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g.setVisible(true); g.setSize(500,300); g.setLocation(300,200); g.setTitle("Timer"); VD v = new VD(g); } } 4. Bố trí các đối tượng trong khung cửa sổ: mở thư viện import java.awt.*; Đầu tiên gọi hàm: setLayout(new <lớp có kiểu bố trí>(…)>); sau đây là các lớp dùng để bố trí các đối tượng trong khung cửa sổ + GridLayout(m,n): m hàng, n cột + FlowLayout(FlowLayout.<vị trí>): bố trí lần lượt theo vị trí đã khai báo mặc định là trung tâm khung cửa sổ FlowLayout.CENTRE 43
  • 44. ANHMATTROI – TIN5A + GridBagLayout(): bố trí theo vị trí ta chỉ định và khai báo thêm một biến của lớp GridBagConstraints <tên biến> = new GridBagConstraints(); sau đó dùng tên biến của lớp để bố trí các đối tượng: <tên biến>.fill = GridBagConstraints.HORIZONTAL/VERTICAL; định hướng theo hàng/cột <tên biến>.gridx = m; <tên biến>.gridy = n; <tên biến>.gridwidth = r; <tên biến>.gridheight = h; Và lúc thêm đối tượng vào khung cửa sổ phải thêm <tên biến>: add(<biến label/button/…>,<tên biến>); 44