1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo chuyên Đề lập trình java Đề tài lập trình giao diện với swing

46 1 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Lập Trình Giao Diện Với Swing
Tác giả Đặng Tùng Lâm
Người hướng dẫn Phương Văn Cảnh
Trường học Trường Đại Học Điện Lực
Thể loại báo cáo chuyên đề
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 46
Dung lượng 1,87 MB

Cấu trúc

  • Chương 2. Các thành phần trong Swing (0)
    • 1. Giao diện người dùng với Java (6)
      • 2.1. Các loại component (10)
      • 2.2. BỐ TRÍ CÁC THÀNH PHẦN BÊN TRONG CÁC ĐỐI TƯỢNG CHỨA (26)
      • 2.3. Làm việc không có LayoutManager (Absolute Positioning) (43)
  • Tài liệu tham khảo (0)

Nội dung

javax.accessibility Chứa các lớp và các giao tiếp mà có thể được sử dụng cho phép công nghệ trợ giúp để tương tác với các thành phần của Swing.. Các thành phần trong swingNội dung của ch

Các thành phần trong Swing

Giao diện người dùng với Java

+ Cung cấp các công cụ cho phép tạo giao tiếp trực quan và hấp dẫn với người dùng, được biết đến là swing

+ Giao diện với người dùng bao gồm 1 cửa sổ chính và các control được đặt lên trên + Các thành phần tạo giao diện nằm trong gói javax.swing

+ Tên của các lớp này bắt đầu bằng chữ J

+ Đây là cửa sổ chính dùng để chứa các thành phần giao diện khác Đóng vai trò là 1 container

+ JFrame thường dùng để tạo ra cửa sổ trong chương trình swing

JFrame(); Tạo một frame nhưng không hiển thị (invisible)

JFrame(String title); Tạo một frame không hiển thị, có tiêu đề.

+ Các thành phần đồ họa được đưa vào content pane, không đưa trực tiếp vào đối tượng JFrame

Chương trình sau minh hoạ cách tạo một JFrame. import javax.swing.*; class FrameDemo

{ public static void main(String args[])

JFrame f=new JFrame (“I have been Frameed!!!”); f.setSize(300,200); f.setVisible(true);

Kết xuất của chương trình giống như hình dưới

+ JPanel là container trung gian dùng để chứa các conponent khác

+ Thường dùng để phân chia các component trong ứng dụng

+ Layout mặc định là FlowLayout

JPanel(); Tạo JPanel mới không tiêu đề

JPanel(LayoutManager layout); Tạo JPanel mới có kiểu Layout là layout

Chương trình sau chỉ ra cách tạo một JPanel: import javax.swing.*; class Paneltest

{ public static void main(String args[])

JFrame f = new JFrame(“Testing a Panel”); f.add(p); f.setSize(300,200); f.setVisible(true);

JPanel không thể hiển thị trực tiếp, vì vậy cần thêm nó vào một JFrame Để làm điều này, trước tiên chúng ta cần tạo một JFrame mới và sau đó thêm JPanel vừa tạo vào JFrame đó.

Kết xuất của chương trình:

Lớp JDialog tương tự như lớp JFrame, nghĩa là JDialog là lớp con của lớp Window Đối tượng dialog được tạo như sau:

JFrame myframe=new JFrame(“My frame”);

String title = “Title”; boolean modal = true;

JDialog dlg=new JDialog(myframe, title, modal);

Tham số modal cho phép hộp thoại ngăn chặn mọi tương tác với các cửa sổ khác trong cùng ứng dụng khi nó đang hiển thị Điều này có nghĩa là người dùng không thể tương tác với các cửa sổ khác cho đến khi hộp thoại được đóng lại.

2 CÁC THÀNH PHẦN GIAO TIẾP NGƯỜI DÙNG CƠ BẢN

+ Form được dùng để thu thập thông tin tù phía người dùng

+ Trong khi giao tiếp, component được dùng để cho phép nhập liệu là TextField hoặc TextBox

+ Để khởi tạo các phần tử, các bước cần phải thực hiện là:

Thiết lập các thuộc tính (size, color, font, …) Đưa nó vào màn hình

+ Được dùng để hiện thị văn bản (text) và hình ảnh (image)

+ Tạo hiệu ứng trực quan cho màn hình giao diện

JLabel(String st); Tạo JLabel với nội dung là st

JLabel(Icon img); Tạo JLabel nội dung là hình ảnh img

JLabel(int align); Tạo một JLabel với một chế độ canh lề (alignment) , canh lề có thể là JLabel.LEFT, JLabel.RIGHT hay JLabel.CENTER.

Các phương thức được sử dụng phổ biến của label được trình bày ở bảng bên dưới:

Phương thức Chức năng setFont(Font f) Thay đổi phông chữ của JLabel setText(String s) Thiết lập nhãn cho Jlabel getText() Lấy nội dung hiện tại của nhãn

Bảng 2.1 Các phương thức của JLabel

Chương trình 2.1 chỉ ra cách sử dụng của Label:

Chương trình 2.1 import javax.swing.*; class Labeltest

JLabel label=new JLabel(“This is just a label”); public static void main(String args[])

JFrame f=new JFrame(“Label”); f.add(label); f.setSize(300,200); f.setVisible(true);

Để tạo một đối tượng JLabel trong Java, bạn có thể sử dụng câu lệnh `JLabel label = new JLabel("This is just a label");` Để hiển thị JLabel, bạn cần thêm nó vào một container, trong trường hợp này là JFrame, bằng cách sử dụng phương thức `add(label);` JLabel chỉ hiển thị khi nó được thêm vào container.

Kết xuất của chương trình được chỉ ra ở hình sau

JTextComponent Đây là lớp cha của tất cả các lớp hiển thị văn bản trong Swing

+ Cho phép soạn thảo chỉ 1 dòng văn bản

JTextField(int cols); tạo JTextField mới với số cột cho trước

JTextField(String text); tạo JTextField mới với nội dung cho trước JtextField(String text, int col);

Các phương thức thường được sử dụng của đối tượng TextField được tóm tắt trong bảng sau:

Phương thức setEchoChar(char) cho phép đặt các ký tự hiển thị thay thế cho ký tự nhập vào Phương thức setText(String s) được sử dụng để gán nội dung cho TextField, trong khi getText() giúp lấy nội dung của TextField Phương thức setEditable(boolean) xác định khả năng soạn thảo của TextField, chỉ cho phép soạn thảo khi tham số truyền vào là True Cuối cùng, isEditable() kiểm tra xem trường có đang ở chế độ soạn thảo hay không, với giá trị trả về kiểu Boolean.

Chương trình sau chỉ ra cách sử dụng của TextField: import javax.swing.*; class JFrameDemo { public static void main(String[] args)

JTextField tf = new JTextField("This is great ",20);

JFrame f = new JFrame(); p.add(tf); f.add(p); f.setSize(300,200); f.setVisible(true);

Trong chương trình này, chúng ta sử dụng phương thức setLayout() để điều chỉnh cách trình bày các thành phần trong vật chứa Layout manager đóng vai trò quan trọng trong việc sắp xếp các thành phần một cách hợp lý trong vật chứa.

Kết xuất của chương trình được chỉ ra ở hình bên dưới:

+ Cho phép nhập nhiều dòng văn bản

+ Có hỗ trợ thanh cuộn

JTextArea(); tạo mới một JTextArea

The JTextArea class in Java provides multiple constructors for creating text areas You can instantiate a JTextArea by specifying the number of rows and columns using `JTextArea(int rows, int cols)` Alternatively, you can create a JTextArea with predefined content by using `JTextArea(String text)` Additionally, the constructor `JTextArea(String text, int rows, int cols)` allows you to initialize a JTextArea with both specific text and dimensions.

Các phương thức thường được sử dụng nhiều nhất của JTextArea:

JTextArea cung cấp một số phương thức hữu ích để quản lý nội dung văn bản Phương thức setText(String) cho phép gán nội dung cho JTextArea, trong khi getText() trả về nội dung hiện tại của nó Để xác định khả năng chỉnh sửa, setEditable(boolean) cho phép bạn thiết lập xem JTextArea có thể được soạn thảo hay không, và isEditable() kiểm tra trạng thái chỉnh sửa hiện tại, trả về giá trị kiểu Boolean Ngoài ra, bạn có thể sử dụng insertText(String, int) để chèn chuỗi tại vị trí chỉ định và replaceText(String, int, int) để thay thế văn bản trong khoảng vị trí cụ thể.

Chương trình sau chỉ ra cách sử dụng của JTextArea: import javax.swing.*; class TextAreatest

{ public static void main(String args[]) {

JLabel lb=new JLabel(“Details”); JTextArea ta=new JTextArea(); JFrame f=new JFrame(“TextArea”); JPanel p=new JPanel(); p.add(lb); p.add(ta); f.add(p); f.setSize(300,200); f.setVisible(true);

Kết xuất của chương trình được chỉ ra ở hình bên dưới:

JPasswordField import javax.swing.*; import java.awt.*; class DemoFrm extends JFrame { public DemoFrm() { super("Demo Frame");

JPasswordField pf = new JPasswordField(12); pf.setEchoChar('*'); p.add(l); p.add(pf); pack(); setVisible(true);

} public static void main(String[] args) { new DemoFrm();

+ Thể hiện chức năng nút bấm

+ JButton là lớp con của lớp AbstractButton

+ Đối tượng JButton bao gồm chuỗi văn bản, hình ảnh và các đường viền + Khởi tạo:

JButton(String text, Icon icon);

Ví dụ đơn giản sau đây sẽ tạo ra 3 button: import javax.swing.*; class Buttontest

{ public static void main(String args[])

JPanel p= new JPanel(); p.add(b1); p.add(b2); p.add(b3); f.add(p); f.setSize(300,200); f.setVisible(true);

Kết xuất của chương trình được chỉ ra ở hình dưới đây

+ Cung cấp cho người dùng khả năng lựa chọn + Các hàm khởi tạo:

JCheckBox(Icon icon, boolean selected);

JCheckBox(String text, boolean selected); JCheckBox(String text, Icon icon);

JCheckBox(String text, Icon icon, boolean selected); JCheckBox(Action a);

Chương trình sau minh họa cách sử dụng các checkbox import javax.swing.*; import java.awt.*; class JCheckboxtest

{ public static void main(String args[])

In this Java Swing example, a JFrame titled "Checkbox and Radiobutton" is created, featuring three JCheckBox components: "red" (selected by default), "Green" (not selected), and "Blue" (not selected) These checkboxes are arranged vertically within a JPanel using a GridLayout of four rows and one column The JPanel is then added to the JFrame, which is set to a size of 300 by 200 pixels and made visible.

Kết xuất được chỉ ra ở hình dưới:

+ 1 tập các nút cho phép lựa chọn chỉ 1 nút tại 1 thời điểm + Dùng lớp ButtonGroup để tạo nhóm

JRadioButton(Icon icon, boolean selected); JRadioButton(String text);

JRadioButton(String text, boolean selected);

JRadioButton(String text, Icon icon);

JRadioButton(String text, Icon icon, boolean selected); JRadioButton(Action a);

Chương trình sau minh họa cách sử dụng các radiobutton: import javax.swing.*; import java.awt.*; class JRadioBoxtest

{ public static void main(String args[])

JRadioButton b1=new JRadioButton("red",true);

JRadioButton b2=new JRadioButton("Green",false); JRadioButton b3=new JRadioButton("Blue",false);

ButtonGroup bg = new ButtonGroup(); bg.add(b1); bg.add(b2); bg.add(b3); p.setLayout(new GridLayout(4,1)); p.add(l); p.add(b1); p.add(b2); p.add(b3); f.add(p); f.setSize(300,200); f.setVisible();

Đầu tiên, chúng ta tạo một đối tượng JFrame làm container cho các checkbox Sau đó, tạo 6 checkbox, trong đó có 2 checkbox được đánh dấu chọn bằng cách truyền giá trị true vào hàm constructor Checkbox cùng với nhãn cho checkbox Để hiển thị các checkbox theo dạng lưới, cần thiết lập GridLayout với 8 dòng và 1 cột Cuối cùng, tạo một biểu hiện cho lớp Checkboxtest, thiết lập kích thước cho JFrame và gọi phương thức setVisible() để hiển thị.

Kết xuất được chỉ ra ở hình bên dưới:

+ Khi các thông tin dùng để lựa chọn nhiều, chúng ta có thể dùng 1 danh sách để cho phép việc chọn lựa

+ Component JList cho phép sắp xếp dữ liệu hiển thị, có thể phân nhóm

+ JList có thể hiển thị chuỗi và icon

+ JList không hỗ trợ double click chuột

Chương trình sau minh họa cách sử dụng JList import javax.swing.*; import java.awt.*; class JListtest extends JFrame { public JListtest() { super("JListtest");

Container c = getContentPane(); c.setLayout(new FlowLayout());

String []listData = {"white","black","blue","green"};

JList list = new JList(listData); c.add(l); c.add(list); pack(); setVisible(true);

} public static void main(String args[])

Kết xuất như hình dưới

+ Là sự kết hợp giữa TextField và Listbox + Cấu trúc gần giống như JList

JComboBox(ComboBoxModel asModel); JcomboBox(Object []item);

Cách sử dụng JComboBox tương tự JList

2.2 BỐ TRÍ CÁC THÀNH PHẦN BÊN TRONG CÁC ĐỐI TƯỢNG CHỨA

Layout manager quản lý cách trình bày vật lý của các thành phần giao diện người dùng (GUI) như nút bấm, ô nhập liệu và nút tùy chọn Nó tự động sắp xếp các thành phần này trong một container, giúp tối ưu hóa trải nghiệm người dùng.

Các kiểu trình bày khác nhau:

Tất cả các thành phần trong ứng dụng của chúng ta được sắp xếp bằng layout manager mặc định, ví dụ như FlowLayout, là cách trình bày tiêu chuẩn cho applet Layout manager này tự động tổ chức các thành phần trong một container, và việc sắp xếp diễn ra nhờ vào layout manager tương ứng Để thiết lập layout manager, chúng ta sử dụng phương thức setLayout().

Bây giờ chúng ta sẽ tìm hiểu chi tiết các cách trình bày và cách bố trí các thành phần của ta vào những vị trí mong muốn.

FlowLayout là trình quản lý bố cục mặc định cho Applet và Panel, nơi các thành phần được sắp xếp từ góc trái trên đến góc phải dưới của màn hình Khi nhiều thành phần được tạo ra, chúng sẽ được bố trí theo hàng từ trái sang phải.

The FlowLayout class has three constructors: public FlowLayout(), public FlowLayout(int alignment), and public FlowLayout(int alignment, int horizontalGap, int verticalGap) The alignment parameter can take values such as FlowLayout.LEFT, FlowLayout.CENTER, and FlowLayout.RIGHT Additionally, the horizontalGap and verticalGap parameters define the pixel spacing between components.

Chương trình sau minh họa về FlowLayout manager import javax.swing.*; import java.awt.FlowLayout; class Fltest extends JFrame

JButton b1=new JButton(“Center Aligned Button 1”);

JButton b2=new JButton(“Center Aligned Button 2”);

JButton b3=new JButton(“Center Aligned Button 3”); public Fltest(String title)

{ super(title); setLayout(new FlowLayout(FlowLayout.CENTER)); add(b1); add(b2); add(b3); setSize(300,200); setVisible(true);

} public static void main(String args[])

Kết xuất của chương trình chỉ ra ở hình sau:

BorderLayout là layout manager mặc định cho Window, Frame và Dialog Layout này xắp xếp tối đa 5 thành phần trong một container.

 NORTH – Đặt ở đỉnh của container.

 EAST – Đặt phía bên phải của container.

 SOUTH – Đặt ở phía dưới của container.

 WEST – Đặt phía bên trái của container.

 CENTER – Đặt ở giữa của container. Để thêm một thành phần vào vùng North, bạn sử dụng cú pháp sau:

Button b1=new Button(“North Button”); // khai báo thành phần setLayout(new BorderLayout()); // thiết lập layout add(b1,BorderLayout.NORTH); // thêm thành phần vào layout

Các thành phần trong giao diện người dùng duy trì vị trí tương đối của chúng ngay cả khi kích thước của container thay đổi Các thành phần ở vùng Bắc và Nam được sắp xếp theo chiều ngang, trong khi các thành phần ở vùng Đông và Tây được bố trí theo chiều dọc Các thành phần trong vùng Trung tâm sẽ được phân bố đều trong các khu vực giữa của container.

Khi tất cả các thành phần được đặt vào các vùng tương ứng, lúc đó JFrame sẽ giống như sau:

BorderLayout có khả năng chứa nhiều hơn năm thành phần bằng cách sử dụng các Panel với các layout khác nhau Chúng ta có thể tổ chức các thành phần trong các Panel này và sau đó đặt chúng vào BorderLayout để tạo ra giao diện hợp lý và linh hoạt.

Ngày đăng: 22/01/2025, 15:14