LẬP TRÌNH GIAO DIỆN VỚI SWING
lượt xem 161
download
Swing là thư viện lập trình mở rộng của java. Nó mở rộng các đối tượng giao diện đồ họa cơ bản của java. Swing còn được gọi là thư viện JEC (Java Foundations Class). Khi muốn sử dụng các đối tượng đồ họa của thư viện này, ta phải khai báo chỉ thị: Import javax.swing.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: LẬP TRÌNH GIAO DIỆN VỚI SWING
- BÀI TẬP NHÓM NHÓM 3 LẬP TRÌNH GIAO DIỆN VỚI SWING • Vũ Duy Khánh • Đặng Thanh Hà • Nguyễn Đình Thịnh • Nguyễn Duy Hưng I. Tổng quan về swing 1.Giới thiệu về Swing Swing là thư viện lập trình mở rộng của java. Nó mở rộng các đ ối t ượng giao di ện đ ồ h ọa cơ bản của java. Swing còn được gọi là thư viện JEC (Java Foundations Class). Khi mu ốn sử dụng các đối tượng đồ họa của thư viện này, ta phải khai báo ch ỉ th ị: Import javax.swing.*; 2. Tại sao lại sử dụng Swing? Swing là gói con được kế thừa và phát triển từ gói giao di ện awt – 1 gói giao di ện đ ời đ ầu. Swing sử dụng những thư viết tự viết độc lập với hệ thống do đó tính ổn đ ịnh cao, lo ại b ỏ được nhược điểm của awt là phụ thuộc vào hệ thống dẫn đến những kết qu ả khác nhau ở những hệ điều hành khác nhau . 3. Các gói và các lớp Swing 3.1. 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 công ngh ệ trợ giúp đề c ập 1 dãy các item, t ừ bộ đọc văn bản đến phóng đại màn hình. Mặc dù các lớp accessibility là nh ững công ngh ệ không thuộc các thành phần Swing nhưng chúng được sử d ụng m ở r ộng thông qua các thành phần Swing. 3.2. javax.swing
- Chứa các thành phần cốt lõi của Sswing, bao gồm hầu hết các mô hình giao ti ếp và các l ớp hỗ trợ 3.3. javax.swing.border Chứa định nghĩa các lớp đường viền trừu tượng cũng nh ư 8 đ ường vi ền đ ược đ ịnh nghĩa. Border không phải là những thành phần, thay vì thế, chúng là nh ững y ếu t ố đ ồ h ọa đ ặc bi ệt mà Swing sử dụng như những thuộc tính và đặt chúng xung quanh các thành ph ần. N ếu như bạn tạo ra border của riêng bạn, bạn có thể tạo l ớp con t ừ nh ững border có s ẵn trong gói này, hoặc bạn có thể viết mã cho một lớp mới 3.4. javax.swing.colorchooser Hỗ trợ cho thành phần JcolorChooser 3.5. java.swing.event Định nghĩa những listener mới và những event mà nh ững thành ph ần Swing s ử d ụng đ ể giao tieeos thông tin với các class 3.6. javax.swing.filechooser Hỗ trợ cho thành phần JfileChooser 3.7. javax.swing.plaf Định nghĩa những yếu tố dụng nhất tạo nên cảm quan (Look And Feel) cho m ỗi thành ph ần Swing. Trong gói này chứa các gói con là javax.swing.plaf.basic, javax.swing.plaf.metal và javax.swing.plaf.multi 3.8. javax.swing.table Cung cấp các mô hình và quan sát cho thành phần table, cho phép b ạn s ắp x ếp thông riêng biệt trong định dạng lưới với sự xuất hiện tượng tự như bảng tính 3.9. javax.swing.text Cung cấp các điểm của các lớp và giao tiếp dựa trên văn b ản h ỗ tr ợ thi ết k ế thông d ụng được biết đến như document/view 3.10. javax.swing.test.html Sử dụng kĩ thuật đọc và định dạng văn bản HTML 3.11. javax.swing.text.html.parser Hỗ trợ việc phân tích HTML 3.12. javax.swing.text.hf Sử dụng kĩ thuật đọc và định dạng Rich Text Formay 3.13. javax.swing.tree Định nghĩa các mô hình và quan sát thành phần m ột cây phân c ấp, có th ể thay th ế m ột c ấu trúc file hoặc một dã các thuộc tính 3.14. javax.swing.undo Chứa những chức năng cần thiết cho việc bổ sung chức năng undo II. Các thành phần trong swing NỘI DUNG + Giao diện người dùng với Java (Java GUI)
- + Các Container : JFrame, JPanel, Jdialog + Các component: Jlabel, Jtextfield, Jbutton, JComboBox, JcheckBox, JradioButton + Layout manager: FlowLayout, GridLayout, BorderLayout, … + Tạo menu 1. 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 Hình 1.1 1.1 JFrame + Đâ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 + Khởi tạo 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 + Ví dụ: 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 + 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 + Khởi tạo: 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[]) { JPanel p = new JPanel (); JFrame f = new JFrame(“Testing a Panel”); f.add(p); f.setSize(300,200); f.setVisible(true); } } JPanel không thể được nhìn thấy trực tiếp. Do đó, chúng ta c ần thêm panel đ ến m ột frame. Vì vậy ta cần tạo một JFrame mới và thêm JPanel mới được t ạo này vào đó. Kết xuất của chương trình:
- JDialog 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 chỉ ra rằng dialog sẽ ngăn chặn bất kỳ tương tác nào xảy đ ến v ới các cửa sổ được mở khác, trong khi dialog đang được hiển th ị trên màn hình. Ki ểu h ộp thoại này ngăn chặn người dùng tương tác với các c ửa s ổ khác (c ủa cùng ứng d ụng) trên màn hình, cho tới khi dialog đượ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à: Tạo phần tử Thiết lập các thuộc tính (size, color, font, …) Đưa nó vào màn hình Các loại component
- Hình 2.1 JLabel + Đượ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 + Các hàm khởi tạo: Tạo JLabel trống JLabel(); 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 Tạo một JLabel với một chế độ canh lề (alignment) , canh JLabel(int align); 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 Thay đổi phông chữ của JLabel setFont(Font f) Thiết lập nhãn cho Jlabel setText(String s) Lấy nội dung hiện tại của nhãn getText() 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); } } label=new JLabel(“This is just a label”); Tạo đ ối tượng JLabel Label sẽ hiển thị chỉ khi nó được thêm vào container. Ở đây, JFrame là add(label); container mà thành phần JLabel được thêm vào. Việc này đ ược th ực hi ện b ằng cách s ử dụng phương thức add(). 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 JTextField + Cho phép soạn thảo chỉ 1 dòng văn bản + Các hàm khởi tạo JTextField(); tạo JTextField mới JTextField(int cols); tạo JTextField mới với số cột cho trước tạo JTextField mới với nội dung cho trước JTextField(String text); 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 Chức năng Đặt các kí tự được hiện ra thay thế setEchoChar(char) ký tự nhập vào. Gán nội dung cho TextField. setText(String s) Lấy nội dung của TextField. getText() Xác định TextField có soạn thảo setEditable(boolean) được hay không. Nó chỉ được soạn thảo khi giá trị tham số truyền vào là True. Xác định xem trường có đang trong isEditable() mode soạn thảo hay không. 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); JPanel p = new JPanel(); 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() đ ể thay đ ổi cách trình bày của các thành phần trên vật chứa. Layout manager có ch ức năng x ắp x ếp các thành phần trong một vật chứa. Kết xuất của chương trình được chỉ ra ở hình bên dưới: JTextArea + Cho phép nhập nhiều dòng văn bản + Có hỗ trợ thanh cuộn + Hàm khởi tạo: JTextArea(); tạo mới một JTextArea JTextArea(int rows, int cols); tạo mới một JTextArea với số cột và s ố dòng cho trước tạo mới một JTextArea với nội dung cho trước JTextArea(String text); JTextArea(String text, int rows, int cols); Các phương thức thường được sử dụng nhiều nhất của JTextArea:
- Phương thức Chức năng Gán nội dung cho JTextArea. setText(String) Trả về nội dung của JTextArea. getText() Xác định xem JTextAreacó thể được soạn setEdiable(boolean) thảo hay không. JTextArea có thể được soạn thảo khi giá trị này là True. Xác định xem JTextArea có đang trong chế isEdiable() độ soạn thảo được không. Trả về giá trị là kiểu Boolean. Chèn chuỗi được vào vị trí được cho trước. insertText(String, int) Thay thế văn bản nằm giữa vị trí int, int cho replaceText(String, int, int) trước. 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"); JPanel p = new JPanel(); JLabel l = new JLabel("Password"); JPasswordField pf = new JPasswordField(12); pf.setEchoChar('*'); p.add(l); p.add(pf); pack(); setVisible(true); } public static void main(String[] args) { new DemoFrm(); } } JButton + 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(); JButton(Icon icon); JButton(String text); JButton(String text, Icon icon); JButton(Action a); Ví dụ đơn giản sau đây sẽ tạo ra 3 button: import javax.swing.*; class Buttontest { public static void main(String args[]) { JButton b1 = new JButton(“red”);
- JButton b2 = new JButton(“Green”); JButton b3 = new JButton(“Blue”); JFrame f= new JFrame(“Button”); 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 JCheckBox + Cung cấp cho người dùng khả năng lựa chọn + Các hàm khởi tạo: JCheckBox(); JCheckBox(Icon icon); JCheckBox(Icon icon, boolean selected); JCheckBox(String text); 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[]) { JLabel l=new JLabel("CheckBoxes"); JCheckBox b1=new JCheckBox("red",true); JCheckBox b2=new JCheckBox("Green",false); JCheckBox b3=new JCheckBox("Blue",false); JFrame f=new JFrame("Checkbox and radiobutton"); JPanel p=new JPanel(); 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(true); } } Kết xuất được chỉ ra ở hình dưới JRadioButton + 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 + Các hàm khởi tạo: JRadioButton(); JRadioButton(Icon icon); 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[]) { JLabel l=new JLabel("JRadioButton"); JRadioButton b1=new JRadioButton("red",true); JRadioButton b2=new JRadioButton("Green",false); JRadioButton b3=new JRadioButton("Blue",false); JFrame f=new JFrame("JCheckbox"); JPanel p = new JPanel(); 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, đối tượng này ho ạt đ ộng nh ư m ột container sẽ chứa thành phần checkbox mà ta đã tạo. Sau đó ta t ạo 6 checkbox, 02 checkbox đ ược đánh dấu chọn. Để làm được điều này, ta đ ưa giá tr ị true nh ư m ột tham s ố cho hàm contructor Checkbox, ngoài ra còn có một tham s ố String là nhãn c ủa checkbox. Đ ể hi ển th ị các điều khiển này theo dạng lưới, ta phải thiết lập cách trình bày v ề d ạng GridLayout có 8 dòng và 1 cột. Cuối cùng, ta tạo một biểu hiện cho l ớp Checkboxtest và thi ết l ập kích th ước cho JFrame. Để hiển thị nó, ta cho gọi phương thức setVisible() Kết xuất được chỉ ra ở hình bên dưới:
- JList + 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 + Khởi tạo: JList(); JList(ListModel dataModel); JList(Object []listData); 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()); JLabel l = new JLabel("Colors"); 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[]) { new JListtest(); } } Kết xuất như hình dưới JComboBox + Là sự kết hợp giữa TextField và Listbox + Cấu trúc gần giống như JList
- + Khởi tạo: JComboBox(); JComboBox(ComboBoxModel asModel); JcomboBox(Object []item); Cách sử dụng JComboBox tương tự JList Kết xuất BỐ TRÍ CÁC THÀNH PHÂN BÊN TRONG CÁC ĐỐI TƯỢNG CHỨA Layout manager điều khiển cách trình bày vật lý c ủa các ph ần t ử GUI nh ư là button, button v.v… Một layout manager tự động bố trí các thành ph ần này textbox, option trong container. Các kiểu trình bày khác nhau: Flow layout Border layout Card layout Grid layout GridBag Layout Tất cả các thành phần mà chúng ta vừa tạo sử d ụng layout manager m ặc đ ịnh. Cho ví dụ, FlowLayout là cách trình bày mặc đ ịnh c ủa m ột applet. Layout manager này s ẽ tự động xắp xếp các thành phần. Tất cả các thành phần đ ược đặt trong m ột container, và được xắp xếp nhờ layout manager t ương ứng. Layout manager đ ược thiết lập bằ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 FlowLayout là layout manager mặc định cho Applet và Panel. Các thành ph ần đ ược x ắp x ếp từ góc trái trên đến góc phải dưới của màn hình. Khi m ột s ố thành ph ần đ ược t ạo, chúng được xắp xếp theo hàng, từ trái sang phải. Lớp FlowLayout có 3 cấu trúc: public FlowLayout(); public FlowLayout(int alignment);
- public FlowLayout(int alignment, int horizontalGap, int verticalGap); aglignment có các giá trị FlowLayout.LEFT, FlowLayout.CENTER, FlowLayout.RIGHT. Thông số horizontalGap và verticalGap xác đ ịnh s ố Pixel đ ặt gi ữa các thành ph ần. 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[]) { new Fltest(“Flow Layout”); } } Kết xuất của chương trình chỉ ra ở hình sau: BorderLayout 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 vẫn giữ nguyên vị trí tương đối của chúng kể c ả khi container b ị thay đ ổi kích thước. Các thành phần được đặt trong vùng North, South đ ược dàn n ằm ngang trong khi đó các thành phần đặt trong vùng East và West l ại được dàn th ẳng đ ứng. Các thành phần được đặt trong vùng Center sẽ được dàn đều vào nh ững khu v ực n ằm gi ữa c ủa container. add(b2,BorderLayout.CENTER); // thêm thành ph ần vào vùng Center 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ó thể chứa nhiều hơn 5 thành phần. Đ ể th ực hi ện đi ều này, chúng ta có th ể sử dụng các Panel với các layout khác nhau đ ể ch ứa các thành ph ần, và sau đó đ ặt các panel này vào trong BorderLayout. CardLayout Manager CardLayout có thể lưu trữ một ngăn xếp (stack) các giao di ện. M ỗi giao di ện gi ống nh ư m ột bảng (card). Bảng thường là đối tượng Panel. Một thành phần đ ộc l ập nh ư button s ẽ đi ều khiển cách trình bày các bảng ở lớp trên cùng. Đầu tiên, chúng ta bố trí tập hợp các thành phần đ ược yêu cầu trên các panel t ương ứng. Mỗi panel sẽ được bố trí vào các layout khác nhau. Ví dụ:
- panelTwo.setLayout(new GridLayout(2,1)); Panel chính sẽ chứa những panel này. Chúng ta thi ết l ập layout c ủa panel chính là Cardlayout như sau: CardLayout card=new CardLayout(); panelMain.setLayout(card); Bước kế tiếp là thêm các panel khác vào panel chính: panelMain.add(“Red Panel”, panelOne); panelMain.add(“Blue Panel”, panelTwo); Phương thức add() sử dụng hai tham số. Tham s ố đầu tiên là m ột String làm nhãn c ủa panel và tham số thứ hai là tên đối tượng Panel. Chương trình minh họa CardLayout: import javax.swing.*; import java.awt.*; import java.awt.event.*; class CardLayoutDemo extends JFrame implements ActionListener { JButton backbutton,nextbutton; JLabel lbl1,lbl2,lbl3,lbl4; JTextField other1; JPanel p1,p2,first,second,third,fourth; CardLayout c1; public CardLayoutDemo() { backbutton=new JButton("Back"); nextbutton=new JButton("Next"); backbutton.addActionListener(this); nextbutton.addActionListener(this); p2 = new JPanel(); p2.setLayout(new FlowLayout()); p2.add(backbutton); p2.add(nextbutton); c1=new CardLayout(); p1=new JPanel(); p1.setLayout(c1);// Set panel layout to CardLayout
- lbl1=new JLabel("First"); lbl2=new JLabel("Second"); lbl3=new JLabel("Third"); lbl4=new JLabel("Fourth"); //First panel first=new JPanel(); first.add(lbl1); //Second panel second=new JPanel(); second.add(lbl2); //Third panel third=new JPanel(); third.add(lbl3); //Fourth panel fourth=new JPanel(); fourth.add(lbl4); //Add panels to the card deck panel p1.add("1",first); p1.add("2",second); p1.add("3",third); p1.add("4",fourth); setLayout(new GridLayout(2,1)); add(p2); add(p1); pack(); setVisible(true); } public void actionPerformed(ActionEvent a) { Object obj = a.getSource(); if (obj == backbutton){ c1.previous(p1); } if (obj == nextbutton){ c1.next(p1); } } public static void main(String[] args) { new CardLayoutDemo(); }
- } Kết xuất của chương trình như sau: Trong hình bên trên, các panel được thêm vào panel chính nh ư là các th ẻ riêng bi ệt. Vì th ế chỉ có thẻ đầu tiên mới được thấy trên màn hình. Nhưng ng ười dùng có th ể đi ều h ướng sang các panel khác sử dụng các phương thức của CardLayout. GridLayout Manager GridLayout trợ giúp việc chia container vào trong ô l ưới. Các thành ph ần đ ược đ ặt trong các ô giao của dòng và cột. Mỗi lưới nên ch ứa ít nhất m ột thành ph ần. M ột l ưới đ ược s ử d ụng khi tất cả các thành phần có cùng kích thước. GridLayout được tạo như sau: Gridlayout g1=new GridLayout(4,3); 4 là số dòng và 3 là số cột. Chương trình sau minh họa cách trình bày lưới: import javax.swing.*; import java.awt.*; class Gltest extends JFrame { JButton btn[]; String str[]={“1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”}; public Gltest(String title) { super(title); setLayout(new GridLayout(3,3)); btn=new JButton[str.length]; for (int i=0; i
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình hướng đối tượng: Lập trình giao diện với Java - TS. Nguyễn Mạnh Hùng
39 p | 190 | 41
-
Thiết kế giao diện động với Swing
17 p | 114 | 32
-
Bài giảng Ngôn ngữ lập trình Java: Phần 2 - TS. Vũ Hữu Tiến
65 p | 42 | 13
-
Bài giảng Lập trình java: Chương 5 - ThS. Hoàng Mạnh Hà
49 p | 95 | 12
-
Bài giảng Kỹ thuật lập trình Java - Chương 10: Lập trình giao diện (tt)
79 p | 81 | 9
-
Giáo trình Công nghệ Java - ĐH Kinh Tế Kỹ Thuật Công Nghiệp
226 p | 62 | 9
-
Bài giảng Lập trình hướng đối tượng: Chương 5 - Trần Công Án
33 p | 55 | 7
-
Bài giảng Lập trình hướng đối tượng (dùng JAVA): Chương 5 - Trần Minh Thái
97 p | 84 | 7
-
Bài giảng Lập trình Java: Bài 8 - Bùi Trọng Tùng
69 p | 81 | 7
-
Bài giảng Lập trình Java - Chương 4: Lập trình giao diện với Java và Swing
107 p | 58 | 5
-
Bài giảng Tin học đại cương 2: Chương 10b - Nguyễn Thị Mỹ Truyền
79 p | 47 | 4
-
Bài giảng Ngôn ngữ lập trình Java: Chương 5 - ĐH Giao thông Vận tải
9 p | 85 | 3
-
Bài giảng Lập trình Cơ sở dữ liệu – Java: Bài 0 - Nguyễn Hữu Thể
3 p | 56 | 3
-
Bài giảng Lập trình hướng đối tượng - Bài 12: Đồ họa và xử lý sự kiện
71 p | 59 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn