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);
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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);
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>);
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));
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ụ:
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); } }); } }
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;
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);
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);
}
}
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
- 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:
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ụ:
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);
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); } }
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ụ:
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));
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
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); } }
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;
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]);
}
}
}
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 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)
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); } }
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");
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"); }
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>);
- 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)
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);
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();
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 }
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));
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[])
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;
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); } }
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ụ:
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()); } }
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ụ:
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
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); } }
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
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>: