1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Bài 6: Ứng dụng đồ họa – Liệt kê các số nguyên tố

17 116 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 150,53 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Bài 6: Ứng dụng đồ họa – Liệt kê các số nguyên tố tập trung làm rõ liệt kê các số nguyên tố, các thành phần đồ họa, quản lí sự kiện, sử dụng lớp nội. Mời các bạn tham khảo bài giảng để nắm bắt nội dung chi tiết.

Trang 1

Bài 6: Ứng dụng đồ họa – Liệt kê

các số nguyên tố

Lê Hồng Phương

phuonglh@gmail.com

Khoa Toán-Cơ-Tin học Trường ĐH Khoa học Tự nhiên, ĐHQG Hà Nội

Trang 2

Nội dung

● Liệt kê các số nguyên tố

● Các thành phần đồ họa

● Quản lí sự kiện

● Sử dụng lớp nội

Trang 3

2012-2013 Object-Oriented Programming: Introduction to Swing 3

Liệt kê các số nguyên tố

● Sử dụng thư viện Swing để phát triển một ứng dụng với giao diện đồ họa cho phép liệt kê các

số nguyên tố.

● Sử dụng lại lớp PrimeNumbers (Bài giảng 1)

Trang 4

Liệt kê các số nguyên tố

● Cửa sổ ứng dụng có tên “Prime Numbers”,

gồm hai panô

● Panô Input chứa 3 thành phần:

– Một nhãn (JTextLabel)

– Một trường văn bản (JTextField)

– Một nút bấm (JButton)

● Panô Result chứa 2 thành phần:

– Một vùng văn bản (JTextArea)

– Một khung cuộn (JScrollPane)

Trang 5

2012-2013 Object-Oriented Programming: Introduction to Swing 5

Liệt kê các số nguyên tố

Khi nhập một số n vào trường văn bản và

bấm phím Ok hoặc gõ Enter thì vùng văn

bản hiển thị các số nguyên tố nhỏ hơn n.

– Mỗi số nguyên tố nằm trên một dòng

– Nếu có nhiều số nguyên tố, vượt quá

số dòng của màn hình thì thanh cuộn

tự động xuất hiện

Trang 6

Các thành phần đồ họa

● Chương trình sử dụng các thành phần đồ họa sau

của thư viện Swing:

– JFrame (cửa sổ ứng dụng)

– JPanel (hai panô Input và Result)

– JLabel

– JButton

– JTextField

– JTextArea

– JScrollPane

– BorderLayout, TitledBorder

Trang 7

2012-2013 Object-Oriented Programming: Introduction to Swing 7

Chương trình

● Các lớp của chương trình:

– PrimeNumbers

– PrimeNumberFrame (là một JFrame)

PrimeNumberApp (chứa hàm main)

● PrimeNumbers không chứa các thành phần đồ họa, chỉ cài đặt thuật toán kiểm tra và liệt kê số nguyên tố.

Trang 8

Chương trình: PrimeNumberApp

public class PrimeNumberApp {

public static void main(String[] args) {

PrimeNumberFrame app = new PrimeNumberFrame();

app.setVisible( true );

} }

Trang 9

2012-2013 Object-Oriented Programming: Introduction to Swing 9

Chương trình: PrimeNumberFrame

public class PrimeNumberFrame extends JFrame {

private JTextField nTextField ;

private JButton okButton ;

private JTextArea resultTextArea ;

private PrimeNumbers pn ;

public PrimeNumberFrame() {

setTitle( "Prime Numbers" );

setSize(200, 400);

setDefaultCloseOperation(EXIT_ON_CLOSE);

initialize();

}

// more code goes here

}

Các phương thức

kế thừa từ JFrame

Trang 10

Chương trình: PrimeNumberFrame

● Một lớp vật chứa (JFrame, JPanel ) dùng để chứa các thành phần đồ họa (nút bấm – JButton, trường văn bản – JTextField, nhãn văn bản – JLabel )

● Swing sử dụng lớp LayoutManager để quản lí việc bài trí các thành phần đồ họa

● Có nhiều kiểu bài trí khác nhau:

– BorderLayout

– BoxLayout, CardLayout, FlowLayout, GridBagLayout, GridLayout, GroupLayout, SpringLayout

Trang 11

2012-2013 Object-Oriented Programming: Introduction to Swing 11

Chương trình: PrimeNumberFrame

● BorderLayout cho phép đặt đối tượng vào một trong 5 vị trí:

– NORTH

– SOUTH

– EAST

– WEST

– CENTER

● Kích thước của các đối tượng thường được co dãn tự

động theo kích thước của thành phần vật chứa

NORTH

SOUTH

Trang 12

Chương trình: PrimeNumberFrame

private void initialize() {

pn = new PrimeNumbers();

// prepare the input panel

JPanel inputPanel = new JPanel();

inputPanel.setBorder(new TitledBorder( "Input" ));

inputPanel.setLayout(new BorderLayout());

inputPanel.add(new JLabel( "Enter n = " ), BorderLayout.WEST);

nTextField = new JTextField();

inputPanel.add( nTextField );

okButton = new JButton( "Ok" );

inputPanel.add( okButton , BorderLayout.EAST);

// add the input panel to the frame

getContentPane().add(inputPanel, BorderLayout.NORTH);

// more code goes here

}

Trang 13

2012-2013 Object-Oriented Programming: Introduction to Swing 13

Chương trình: PrimeNumberFrame

private void initialize() {

//

// prepare the result panel

JPanel resultPanel = new JPanel(new BorderLayout());

resultPanel.setBorder(new TitledBorder( "Result" ));

resultTextArea = new JTextArea();

resultPanel.add(new JScrollPane( resultTextArea ),

BorderLayout.CENTER);

// add the output panel to the frame

getContentPane().add(resultPanel, BorderLayout.CENTER);

// more code goes here

}

Gọi một hàm tạo khác của lớp JPanel

Trang 14

Chương trình: PrimeNumberFrame

class EnumeratePrimeNumbersListener implements ActionListener {

@Override

public void actionPerformed(ActionEvent event) {

int n = Integer.parseInt( nTextField getText());

String primes = pn listPrimeNumbers(n);

resultTextArea setText(primes);

}

}

● Quản lí sự kiện:

– Viết một bộ nghe sự kiện (bấm phím, kích chuột ), là một lớp cài đặt giao diện ActionListener

– Giao diện này có một phương thức duy nhất

public void actionPerformed(ActionEvent event)

Trang 15

2012-2013 Object-Oriented Programming: Introduction to Swing 15

Chương trình: PrimeNumberFrame

class EnumeratePrimeNumbersListener implements ActionListener {

@Override

public void actionPerformed(ActionEvent event) {

int n = Integer.parseInt( nTextField getText());

String primes = pn listPrimeNumbers(n);

resultTextArea setText(primes);

}

}

Lớp EnumeratePrimeNumbersListener là lớp nội, nằm

trong lớp PrimeNumberFrame

Vì sao sử dụng lớp nội?

– Tiện lợi trong việc truy nhập các dữ liệu của lớp chứa

nó (Ví dụ, sử dụng các trường pn, resultTextArea của

lớp PrimeNumberFrame)

Trang 16

Chương trình: PrimeNumberFrame

● Gắn bộ nghe sự kiện bấm phím Enter (hoặc kích

chuột trái) cho trường văn bản và nút bấm:

private void initialize() {

//

// add an action listener to the Ok button EnumeratePrimeNumbersListener listener = new

EnumeratePrimeNumbersListener();

okButton addActionListener(listener);

// add the same action listener to the text field

nTextField addActionListener(listener);

}

Trang 17

2012-2013 Object-Oriented Programming: Introduction to Swing 17

Tham khảo thêm

● Graphical User Interfaces

● Creating GUI with JFC/Swing

● API Documentation:

Browse javax.swing.* packages

Ngày đăng: 30/01/2020, 07:48

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w