SlideShare a Scribd company logo
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

More Related Content

PDF
Lớp kết nối csdl dùng jdbc trong java
PPT
Laptrinh jdbc
PDF
Các bước kết nối csdl my sql với java
ODP
Android Nâng cao-Bài 8-JSON & XML Parsing
ODP
Android Nâng cao-Bài 4: Content Provider
PDF
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
PDF
Slide3 - Co ban HTML5
PDF
Bài 2: Biến và toán tử - Giáo trình FPT
Lớp kết nối csdl dùng jdbc trong java
Laptrinh jdbc
Các bước kết nối csdl my sql với java
Android Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 4: Content Provider
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
Slide3 - Co ban HTML5
Bài 2: Biến và toán tử - Giáo trình FPT

What's hot (20)

PPTX
Basic Sqlite in Android
PDF
Bai4 basic jsp_4474
PDF
BÀI 3 Làm việc với JAVASCRIPT và JQUERY - Giáo trình FPT
PDF
Bai1 gioi thieu_servlet_va_jsp_8952
PDF
3. phan quyen trong sql server 01012010
PDF
Stored procedure
PDF
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
PDF
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
PDF
Bai3 basic servlets_956
DOCX
Tao mot ket noi toi co so du lieu dung c#
PDF
Web203 slide 5
PDF
Bài 5: Hàm người dùng định nghĩa & VIEW - Giáo trình FPT
PDF
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
DOCX
Thuc thi menh lenh voi co so du lieu
PDF
Web301 slide 2
PDF
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
PDF
Mo hinh-3-lop
PDF
Lap trinhcosodulieuvoi c-sharp_phan-2
PPTX
E learning lab - Tim hieu Cake PHP
DOCX
2.gioi thieu co ban ado.net cho nguoi lap trinh c#
Basic Sqlite in Android
Bai4 basic jsp_4474
BÀI 3 Làm việc với JAVASCRIPT và JQUERY - Giáo trình FPT
Bai1 gioi thieu_servlet_va_jsp_8952
3. phan quyen trong sql server 01012010
Stored procedure
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
Bai3 basic servlets_956
Tao mot ket noi toi co so du lieu dung c#
Web203 slide 5
Bài 5: Hàm người dùng định nghĩa & VIEW - Giáo trình FPT
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Thuc thi menh lenh voi co so du lieu
Web301 slide 2
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Mo hinh-3-lop
Lap trinhcosodulieuvoi c-sharp_phan-2
E learning lab - Tim hieu Cake PHP
2.gioi thieu co ban ado.net cho nguoi lap trinh c#
Ad

Viewers also liked (20)

PPT
Lập trình Java GUI
DOCX
Đồ án tìm hiểu java và một số bài tập ứng dụng
PDF
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
PPT
BáO CáO Lý ThuyếT Java
PPTX
Java 3D
PDF
BÁO CÁO CUỐI KÌ ĐỀ TÀI THỰC TẬP
PPTX
Accessibility
PPTX
Tổng quan về struts framework, mvc
PDF
[Cntt] bài giảng java khtn hcm
DOC
Core java 3
 
DOC
Core java 10
 
DOC
Core java 1
 
DOC
Core java 5
 
DOC
Core java 4
 
PDF
Laptrinh java
PPTX
Bài 3: Cấu trúc chương trình
PPT
Ky thuat l.trinh_java
PPT
Bai10 he thong bao ve bao mat
DOC
Core java 9
 
DOC
Core java 2
 
Lập trình Java GUI
Đồ án tìm hiểu java và một số bài tập ứng dụng
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
BáO CáO Lý ThuyếT Java
Java 3D
BÁO CÁO CUỐI KÌ ĐỀ TÀI THỰC TẬP
Accessibility
Tổng quan về struts framework, mvc
[Cntt] bài giảng java khtn hcm
Core java 3
 
Core java 10
 
Core java 1
 
Core java 5
 
Core java 4
 
Laptrinh java
Bài 3: Cấu trúc chương trình
Ky thuat l.trinh_java
Bai10 he thong bao ve bao mat
Core java 9
 
Core java 2
 
Ad

Similar to Lap trinh giao dien nguoi dung voi Java (20)

PDF
Javagui
PPT
Bai4 ltgiaodien 9165
PDF
CoreJava_Chap5
PDF
1-Tong quan ve Java.pdfdqwdqwdqwdqwdqwdqwd
PPT
Javagui 1226937311176297-9
PDF
Oop 11
PDF
PPT
MVC
PDF
Bai08 lap trinhtongquat
DOCX
Tự học lập trình java b1
PDF
Bai02 java introduction
PDF
179887496 sdc1-bai tap-javacanban-5
PDF
Giaotrinh vb
PDF
Oop unit 05 một số kỹ thuật java nâng cao
PDF
bt-mon-lap-trinh-huong-doi-tuong.pdf
PDF
[Cntt] bài giảng lập trình java bkhcm
PDF
PDF
OOP in Java - Ver1.1
PDF
Oop unit 12 đồ họa và xử lý sự kiện
PPT
Java Tieng Viet
Javagui
Bai4 ltgiaodien 9165
CoreJava_Chap5
1-Tong quan ve Java.pdfdqwdqwdqwdqwdqwdqwd
Javagui 1226937311176297-9
Oop 11
MVC
Bai08 lap trinhtongquat
Tự học lập trình java b1
Bai02 java introduction
179887496 sdc1-bai tap-javacanban-5
Giaotrinh vb
Oop unit 05 một số kỹ thuật java nâng cao
bt-mon-lap-trinh-huong-doi-tuong.pdf
[Cntt] bài giảng lập trình java bkhcm
OOP in Java - Ver1.1
Oop unit 12 đồ họa và xử lý sự kiện
Java Tieng Viet

More from ANHMATTROI (7)

PDF
Chuỗi số tăng dần lớn nhất
PDF
Cập nhật csdl ngay trên datagridview trong vb
PDF
Cap nhat CSDL trong VB.NET
PPTX
Thuat toan Prim
PDF
Co so du lieu t sql
PDF
Mot so ham do hoa trong c c++
PDF
Mot so bai toan quy hoach dong
Chuỗi số tăng dần lớn nhất
Cập nhật csdl ngay trên datagridview trong vb
Cap nhat CSDL trong VB.NET
Thuat toan Prim
Co so du lieu t sql
Mot so ham do hoa trong c c++
Mot so bai toan quy hoach dong

Lap trinh giao dien nguoi dung voi Java

  • 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