44
ANHMATTROI – TIN5A 1 JAVA GUI 1. Ca s- To ca swindows: khai báo mt l p kế tha tlp JFrame hoc không + Khai báo thư viện: import javax.swing.JFrame; + Khai báo bi ến: <tên l p kế tha tlp JFrame> <tên bi ến>; Để sdụng được biến ta cn khi to cho bi ến bng toán tnew: <tên biến> = new <tên l p kế tha tlp JFrame>; + Các hàm: truy cp hàm <tên biến>.<tên hàm>(…); add(<thêm đối tượng vào ca s>); setLayout (new <ki u btrí>); Ki u btrí gm 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 chut>); setAlwaysOnTop(boolean); có luôn hin trên desktop không setResizable(boolean); validate(); hin thngay 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);

Lap trinh giao dien nguoi dung voi Java

Embed Size (px)

Citation preview

Page 1: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

1

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);

Page 2: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

2

} }

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));

Page 3: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

3

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;

Page 4: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

4

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:\\Users\\ANHMATTROI\\Desktop\\AMT.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); } }); } }

Page 5: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

5

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;

Page 6: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

6

+ 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);

Page 7: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

7

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);

}

}

Page 8: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

8

- 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)

Page 9: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

9

{

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);

Page 10: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

10

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();

Page 11: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

11

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:

Page 12: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

12

<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;

Page 13: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

13

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);

Page 14: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

14

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); } }

Page 15: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

15

- 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;

Page 16: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

16

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));

Page 17: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

17

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

Page 18: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

18

{ 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); } }

Page 19: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

19

- 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;

Page 20: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

20

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",

Page 21: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

21

"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);

Page 22: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

22

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]);

}

}

}

Page 23: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

23

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;

Page 24: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

24

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)

Page 25: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

25

{ 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); } }

Page 26: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

26

- 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");

Page 27: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

27

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"); }

Page 28: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

28

} } } 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:

Page 29: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

29

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);

}

Page 30: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

30

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)

Page 31: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

31

{

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);

Page 32: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

32

//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();

Page 33: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

33

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 }

Page 34: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

34

} + 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));

Page 35: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

35

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[])

Page 36: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

36

{

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;

Page 37: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

37

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 = new

ImageIcon("C:\\Users\\ANHMATTROI\\Desktop\\AMT.jpg"); imageicon.setDescription("Hoa Bo COng Anh"); 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); } }

Page 38: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

38

- 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;

Page 39: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

39

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()); } }

Page 40: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

40

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;

Page 41: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

41

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

Page 42: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

42

{ 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); } }

Page 43: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

43

} 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

Page 44: Lap trinh giao dien nguoi dung voi Java

ANHMATTROI – TIN5A

44

+ 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>);